如何在listview android中存储检查列表状态?

时间:2012-04-09 17:43:28

标签: android checkbox simplecursoradapter listadapter onitemclicklistener

我使用listview显示三个textview(这些文本视图的值来自数据库)和一个复选框。我希望在用户单击复选框时存储复选框状态,并在它们返回时显示它。但是,我是Android开发的新手,我不知道该怎么做。我已经尝试在列表视图中添加复选框,但onitemclick已禁用。下面是代码,

这是从listview中的数据库和列表中检索值的游标,

Cursor yearcursor = db.paymentall(this); 
 String[] yearfrom = new String[]  
{ PaymentAppDataBase.REQUESTEDDATE,PaymentAppDataBase.PAYMENTNAME,PaymentAppDataBase.AMOUNT };
 int[] yearto = new int[] { R.id.Date,R.id.Name,R.id.Amount };

            SimpleCursorAdapter yearadapter =

 new SimpleCursorAdapter(this, R.layout.listview, yearcursor, yearfrom, yearto);

setListAdapter(yearadapter);

 amount.setOnItemClickListener(new OnItemClickListener() {


@Override

public void onItemClick(AdapterView<?> parent, View view, int position,

 long id) {


 Cursor cursor = (Cursor) parent.getItemAtPosition(position);


 String toaddressreview = cursor.getString(4);

 String subjectreview = cursor.getString(5);

 String emailbodyreview = cursor.getString(6);

 Intent todayreview = new Intent(ReviewPayment.this,ReviewandResend.class);

todayreview.putExtra("toadd", toaddressreview);

 todayreview.putExtra("subjectreveiew", subjectreview);

 todayreview.putExtra("emailbody", emailbodyreview);

 startActivity(todayreview);

 }

}); 

Mt xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:paddingTop="4dip"

android:paddingBottom="6dip"

 android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal">


 <TextView android:id="@+id/Date"

 android:layout_width="100dip"

 android:layout_height="wrap_content"

 android:textSize="14sp"/>


<TextView android:id="@+id/Name"

 android:layout_width="120dip"

android:layout_height="wrap_content" 

android:layout_weight="2" 

 android:scrollbarAlwaysDrawHorizontalTrack="true"

 android:layout_toRightOf="@+id/Date"/>


<TextView android:id="@+id/Amount"

 android:layout_width="50dip"

android:layout_height="20dip"  

 android:scrollbarAlwaysDrawHorizontalTrack="true" 

 android:layout_weight="2"

 android:layout_toRightOf="@+id/Name"/>


<CheckBox

 android:id="@+id/checkBox1"

 android:layout_width="wrap_content"

 android:layout_height="50dip"

 android:layout_alignBottom="@+id/Amount"

 android:layout_alignParentRight="true"

 android:layout_toRightOf="@+id/Amount" />

</RelativeLayout>

如果我得到两个问题的答案,那就太好了,

1。如何保存复选框的状态?

2. 如何在使用复选框时启用onitemclicklistener?

提前致谢

1 个答案:

答案 0 :(得分:0)

  1. 没有简单的方法可以保持布尔数组等于列表项的数量并存储状态。您需要将此变量作为从SimpleCursorAdapter派生的自定义适配器的成员变量。

  2. 同样,它需要成为自定义适配器的一部分。在适配器的getView()函数中,您需要为复选框实现onCheckedChangeListener()[不记得现在的确切名称],并在您拥有listview的主Activity中,将onItemClickListener()设置为列表视图。

  3. 如果这没有意义,只需在stackoverflow中进行一些操作即可。这个问题已经多次处理过了。