Onclick复选框,更新特定项目的数据库 - android

时间:2012-12-26 13:20:38

标签: android listview checkbox

我想点击我的复选框来更新我的数据库

enter image description here

但我不知道我怎么能抓住这个项目。单击复选框,我的项目列表。

这是我的代码:

@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)

使这项工作的方法,但我不能,因为我计划在用户点击项目列表时使用此方法,将弹出描述和图像。

谢谢

1 个答案:

答案 0 :(得分:1)

通过setTag()方法在适配器中创建视图时,可以将一些Id的行放入复选框。然后在处理检查状态更改时将其解压缩。像这样:

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    int id = (Integer)buttonView.getTag();
}