Wenn ich lange auf ein Element in der Listenansicht drücke, wurde die Kontext-Aktionsleiste angezeigt. Nun, was ich will, dass, wenn ich die Löschen-Taste nach der Auswahl von Elementen drücken, dann die ausgewählten Elemente gelöscht werden, aber ich bin nicht in der Lage, die Position der ausgewählten Elemente zu erhalten. Mein Code für Multi Wahl-Modus ist:Die Position des ausgewählten Elements im Aktionsmodus abrufen
listViewMessages.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listViewMessages.setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
mode.setTitle(listViewMessages.getCheckedItemCount()+ " Selected");
}
@Override
public boolean onActionItemClicked(final ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu:
deleteScreenedMessageFromInbox();
mode.finish();
return true;
default:
return false;
}
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// Inflate the menu for the CAB
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.contextual, menu);
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
});
Wenn ich auf Schaltfläche Löschen klicken dann diese Methode aufrufen wird:
deleteScreenedMessageFromInbox();
und ich habe ein Argument in dieser Methode zu übergeben, die die Position von ausgewählte Artikel. Code für diese Methode ist:
public void deleteScreenedMessageFromInbox(Integer position) {
Integer id = smsIDs.get(position);
String deleteScreenedMessage = "delete from " + "sms" + " where " + "id" + " = " + id;
DBsms smsDb = new DBsms(this);
SQLiteDatabase dbw = smsDb.getWritableDatabase();
dbw.execSQL(deleteScreenedMessage);
dbw.close();
irgendwelche Lösungen dafür?
Sie könnten ein 'Arraylist halten' außerhalb des 'MultiChoiceModeListener' und' add' ein Element oder 'remove' ein Element von der 'ArrayList' aus innerhalb' onItemCheckedStateChanged' abhängig davon, ob 'boolean checked' auf 'true' oder 'false' gesetzt ist. Lassen Sie es mich wissen, wenn Sie möchten, dass ich dies zu einer Antwort ausweiten kann. –
Ja, bitte geben Sie mir einen Beispielcode, da ich ein bisschen verwirrt bin –
Ich habe einige Änderungen an Ihrem bestehenden Code vorgenommen und diese als Antwort gepostet. Bitte prüfe. –