Tôi đang cố gắng triển khai danh sách xem có hộp kiểm để khi hộp kiểm được chọn, hàng danh sách sẽ bị xóa. Tôi đang populating listview với một con trỏ và điều này đang làm việc tốt và hộp kiểm đang được hiển thị.Android ListView Với hộp kiểm xóa/nhận ID hàng
Điều tôi đang gặp phải là tìm hiểu cách nhận _id của hàng của ô đã được chọn.
bất cứ ai có thể chỉ cho tôi làm thế nào để thực hiện một cái gì đó giống như
ListView này và CheckBox
Cursor cursor = db.getAllItems();
//String[] columns = new String[] {db.KEY_NAME, db.KEY_CODE, db.KEY_ROWID};
String[] columns = new String[] {db.KEY_ITEM_NAME, db.KEY_MEASUREMENT, db.KEY_UNIT};
int[] to = new int[] {R.id.ingredientName, R.id.ingredientMeasurement, R.id.ingredientUnit};
final SimpleCursorAdapter myCursorAdapter = new SimpleCursorAdapter(this,R.layout.row4, cursor, columns, to, 0);
final ListView shoppingList = (ListView) findViewById(R.id.shoppingList);
shoppingList.setAdapter(myCursorAdapter);
CheckBox deleteCheck = (CheckBox)findViewById(R.id.checkBox1);
deleteCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (isChecked){
// How do I get the list item clicked to delete row?
}
}
});
XML - Row.4.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:id="@+id/ingredientName"
android:layout_width="wrap_content"
android:textColor="#000000"
android:layout_height="wrap_content"
android:padding="5dp"
android:hint="wewewe"/>
<TextView
android:id="@+id/ingredientMeasurement"
android:textColor="#000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/ingredientName"
android:padding="5dp"
android:hint="fefefef"/>
<TextView
android:id="@+id/ingredientUnit"
android:textColor="#000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/ingredientMeasurement"
android:padding="5dp"
android:hint="qqqqq"/>
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:background="#fff"
android:text=""/>
</LinearLayout>
tốt, bạn có thể tạo hai phương pháp để xóa các mục khỏi listview, một trong bộ điều hợp và thứ hai trong cơ sở dữ liệu. 'adapter.remove (item.getId (checkedId));' và gọi phương thức thứ hai từ cơ sở dữ liệu 'dataBase.remove (item.getId (checkedId));' Đó là cách bạn sẽ xóa mục khỏi adapter và cơ sở dữ liệu. –
Cảm ơn bạn đã trả lời, chỉ một câu hỏi, hàm 'getId', điều này có nhận được' id' của hàng hoặc '_id' thực trong cơ sở dữ liệu không? – JJSmith
'getId' sẽ nhận được id được chỉ định của đối tượng bạn đang chọn trong listView. –