listView下方的按钮

时间:2013-01-31 17:44:40

标签: android android-layout

我是Android新手,我正在开展的第一个项目是将玩家加入团队。我有一个listview,可以从数据库中获取所有玩家。每个名称都应该在它们旁边有一个复选框,然后底部有一个按钮,用于更新数据库。到目前为止,这是我得到的。

http://dyp.im/W79JdmfIk

这是我的活动

 package com.example.sqllitetest;

 import android.app.AlertDialog;
 import android.app.ListActivity;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.database.Cursor;
 import android.os.Bundle;
 import android.support.v4.widget.ResourceCursorAdapter;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.*;

public class Tester extends ListActivity {

MyAdapter mListAdapter;
PlayersDBAdapter mDbHelper;
private Button button;
private Context context = this;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mDbHelper = new PlayersDBAdapter(this);
    mDbHelper.open();
    Cursor myCur = mDbHelper.fetchAllPlayers();
    startManagingCursor(myCur);
    setContentView(R.layout.playertoteam);

   // registerForContextMenu(getListView());
   // ((Tester) context).setContentView(R.layout.playertoteam);
    //getListView().addFooterView(button);
    mListAdapter = new MyAdapter(Tester.this, myCur);
    setListAdapter((ListAdapter) mListAdapter);

    Button button = (Button) findViewById(R.id.alertBox);
    button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            setResult(RESULT_OK);
            finish();
        }

    });

}


private class MyAdapter extends ResourceCursorAdapter {

    public MyAdapter(Context context, Cursor cur) {
        super(context, R.layout.playertoteam, cur);
    }

    @Override
    public View newView(Context context, Cursor cur, ViewGroup parent) {
        LayoutInflater li = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        return li.inflate(R.layout.playertoteam, parent, false);
    }

    @Override
    public void bindView(View view, Context context, Cursor cur) {
        TextView tvListText = (TextView)view.findViewById(R.id.code);
        CheckBox cbListCheck = (CheckBox)view.findViewById(R.id.checkBox1);

        tvListText.setText(cur.getString(cur.getColumnIndex(mDbHelper.KEY_NAME)));
        cbListCheck.setChecked((cur.getInt(cur.getColumnIndex(mDbHelper.KEY_ID))==1? false:true));
    }




}
}

这是我的xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="6dip" >

 <Button
    android:id="@+id/alertBox"
    android:layout_alignParentBottom="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/confirm" />
  <RelativeLayout
            android:id="@+id/relativeLayout3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="top" >
            <ListView
                android:id="@android:id/list"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_above="@id/alertBox"
                />
            <TextView
                android:id="@+id/code"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                />

              <CheckBox android:id="@+id/checkBox1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="false"
                android:focusableInTouchMode="false"

                />

  </RelativeLayout>

</LinearLayout>

我想知道如何从行和主确认按钮下方的复选框中删除按钮。另外我想知道这是否是做这样的事情的最佳方式,因为,再一次,我是新手,我不知道如何寻找正确的方法。

2 个答案:

答案 0 :(得分:2)

ResourceCursorAdapter为ListView的每一行创建在newView()方法中膨胀的视图。由于这个原因,你在每一行都有按钮。 Soln:创建一个单独的xml,定义ListView的行布局,并在newView()方法中扩展这个新布局。并且在主布局中只有按钮和ListView,即playertoteam.xml

playertoteam.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="6dip" >

<Button
    android:id="@+id/alertBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:text="@string/confirm" />

<ListView
    android:id="@android:id/list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_above="@id/alertBox" />

</RelativeLayout>

row_layout.xml

   <?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content">

  <TextView
    android:id="@+id/code"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true"/>

  <CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:focusableInTouchMode="false" 
    android:layout_alignParentRight="true"/>

 </RelativeLayout>

您可以找到ListView here

的示例

答案 1 :(得分:0)

你可以使用listview的addFooterView方法。

View footerView =
((LayoutInflater)
ActivityContext.
getSystemService
(Context.LAYOUT_
INFLATER_SERVICE)).inflate
(R.layout.footer_
layout, null, false);
ListView.addFooterView
(footerView);