我想点击我的复选框来更新我的数据库
但我不知道我怎么能抓住这个项目。单击复选框,我的项目列表。
这是我的代码:
@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)
使这项工作的方法,但我不能,因为我计划在用户点击项目列表时使用此方法,将弹出描述和图像。
谢谢
答案 0 :(得分:1)
通过setTag()方法在适配器中创建视图时,可以将一些Id的行放入复选框。然后在处理检查状态更改时将其解压缩。像这样:
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int id = (Integer)buttonView.getTag();
}