Sto tentando di implementare un listview con la casella di controllo in modo che quando una casella di controllo è selezionata, la riga di elenco verrà rimossa. Sto popolando il listview con un cursore e questo sta funzionando bene e la casella di controllo viene visualizzata.ListView Android con casella di controllo Eliminazione/recupero ID riga
Quello che sto avendo problemi è capire come ottenere il _id della riga della casella che è stata controllata.
Qualcuno mi può mostrare come implementare qualcosa di simile
ListView e 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>
beh, è possibile creare due metodi per la rimozione di articoli da listview, uno in adattatore e il secondo nel database. 'adapter.remove (item.getId (checkedId));' e chiama il secondo metodo dal database 'dataBase.remove (item.getId (checkedId));' Questo è il modo in cui si eliminerà l'elemento dall'adattatore e dal database. –
Grazie per la risposta, solo una domanda, la funzione 'getId', otterrà il' id' della riga o l'effettivo '_id' nel database? – JJSmith
La funzione 'getId' otterrà l'id specificato dell'oggetto che si sta selezionando in listView. –