So entfernen Sie ein ausgewähltes Element aus dem ListView mit CursorAdapter
Ich bin mit CursorAdapter
und unten ist mein adapter-Klasse. Meine Liste besteht aus zwei text-Ansichten und eine Schaltfläche auf jeder Zeile. Jetzt, klicken Sie auf die Schaltfläche ich möchte löscht das ausgewählte Element aus der Liste als auch aus der Datenbank. Wie bekomme ich die id des ausgewählten Elements aus der Datenbank, so dass ich es löschen und Benachrichtigen dann den adapter (Liste aktualisieren).
public class MyAdapter extends CursorAdapter {
Cursor c;
LayoutInflater inflater;
Context context;
private String TAG = getClass().getSimpleName();
public MyAdapter(Context context, Cursor c) {
super(context, c);
this.c = c;
this.context = context;
inflater = LayoutInflater.from(context);
}
@Override
public void bindView(View view, Context context, final Cursor cursor) {
TextView txtName = (TextView) view.findViewById(R.id.txt_name);
txtName.setText(cursor.getString(cursor.getColumnIndex(Helper.tbl_col_username)));
TextView txtPassword = (TextView) view.findViewById(R.id.txt_password);
txtPassword.setText(cursor.getString(cursor.getColumnIndex(Helper.tbl_col_password)));
Button button = (Button) view.findViewById(R.id.btn_delete);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Log.d(TAG, "Button Click ");
}
});
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View v = inflater.inflate(R.layout.row, null);
return v;
}
}
- Wie pro Ihre listview binden mit cursor und führen Sie den cursor mit der Aktivität dann auf onListItemClick gibt Ihnen die _ID, die Sie wollen, aber hier sind Sie versuchen, einen _ID auf die Schaltfläche klicken Sie in bindView dann müssen Sie Holen die ID an, bevor Sie die Schaltfläche die klicken Sie auf mit _ID Spalte name und geben Sie Sie an Ihre Schaltfläche klicken, und verwenden Sie es.. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen einige Sache wie diese :
cursor.requery()
ist jetzt veraltetIm vorausgesetzt, diese ID wird in den cursor. Dann machen Sie einfach Ihre eigene Klasse DeleteEntryOnClicklistener implementiert OnClickListener und lassen Sie es nehmen Sie die ID in seinem Konstruktor und löscht den Eintrag, wenn geklickt wird.
Bitte Kommentar, wenn ich missverstanden haben, Ihr problem oder wenn ich unklar, prost 🙂
edit:
In Ihrem
bindView()
ändern Sie den OnClicklistener zu, so etwas wie dieses:Sowie
DeleteEntryOnClicklistener
sollte in etwa so Aussehen: