我有一个列表视图,其中显示了两个数据库元素以及一个不会与数据库列关联的复选框元素。我想使用复选框来允许用户从列表视图中选择要处理的行。
我为 listView 创建了以下布局。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="6dip" />
<TextView
android:id="@+id/dbCol1View"
android:layout_width="fill_parent"
android:layout_height="26dip"
android:layout_toRightOf="@id/checkBox1"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:singleLine="true"
android:ellipsize="marquee" />
<TextView
android:id="@+id/dbCol2View"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/checkBox1"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_above="@id/dbCol1View"
android:layout_alignWithParentIfMissing="true"
android:gravity="center_vertical" />
</RelativeLayout>
然后我有一个数据库对象,如下所示:
public class DbObj{
private int id;
private String dbCol1;
private String dbCol2;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDbCol1() {
return dbCol1;
}
public void setDbCol1(String dbCol1) {
this.dbCol1 = dbCol1;
}
public String getDbCol2() {
return dbCol2;
}
public void setDbCol2(String dbCol2) {
this.dbCol2 = dbCol2;
}
}
然后我在我的代码中使用 SimpleCursorAdapter,如下所示:
String cols[] = { "dbCol1", "dbCol2" };
int views[] = { R.id.dbCol1View, R.id.dbCol2View };
cursor = dbObjDAO.getByCriteria(criteria);
SimpleCursorAdapter ca = new SimpleCursorAdapter(rootActivity,
R.layout.list_layout, cursor, cols, views);
startManagingCursor(cursor);
listView.setAdapter(ca);
该列表显示良好,并且复选框在那里并且可以被选中。我的问题是如何遍历 listView 以查找已选中复选框的项目?