0

我想通过单击我的复选框来更新我的数据库

在此处输入图像描述

但我不知道如何捕获项目编号。通过单击复选框来查看我的项目列表。

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bucket_item);

int value = getIntent().getExtras().getInt("bucketno");
DatabaseHandler myDbHelper = new DatabaseHandler(this);

BucketItem[] bucketItems = myDbHelper.getAllContacts(value);
BucketItemAdapter adapter = new BucketItemAdapter(this, R.layout.row_item, bucketItems);

listView2 = getListView();
View header = (View) getLayoutInflater().inflate(R.layout.row_header, null); 
listView2.addHeaderView(header);
listView2.setAdapter(adapter);

}

activity_bucket_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">    

    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:layout_weight="1"
    />

</LinearLayout>

row_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@color/lightgray"
    android:orientation="horizontal" >

    <CheckBox
        android:id="@+id/completed"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/bucketNo"
        android:layout_width="29dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp" />

    <TextView
        android:id="@+id/bucketItemName"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginLeft="0dp"
        android:layout_marginRight="10dp"
        android:layout_weight="0.97" />

    <TextView
        android:id="@+id/bucketItemNo"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:visibility="gone" />

</LinearLayout>

如何单击复选框,然后调用数据库的更新方法?任何的想法?

笔记:

我研究过我可以覆盖

onListItemClick(ListView listView, View v, int position,
            long id)

方法,但我不能,因为我打算在用户单击项目列表时使用此方法,描述和图像会弹出。

谢谢

4

1 回答 1

1

通过 setTag() 方法在适配器中创建视图时,您可以在复选框中添加一些行 ID。然后在处理检查状态更改时提取它。像这样的东西:

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    int id = (Integer)buttonView.getTag();
}
于 2012-12-26T13:44:33.093 回答