Ich bin ein Anfänger Android Entwickler und arbeitete an der Erstellung einer grundlegenden To-Do-Liste App. Die App enthält eine benutzerdefinierte Listenansicht mit einem farbigen Kreis zum Anzeigen der Priorität, dem Titel und einem Kontrollkästchen zum Überprüfen und Löschen des Elements, wenn der Benutzer es getan hat. Die App speichert diese Aufgaben mithilfe der SQLite-Datenbank und verwendet Loader zum Abrufen von Daten.android: Wie lösche ich ein ListView-Objekt mit Checkbox?
Was ich versuche ist, das Element aus der Liste zu löschen, sobald das Kontrollkästchen aktiviert ist.
Ich habe versucht, Löschen Aufgabe in der Adapter-Klasse wie folgt (auch versucht zu animieren Löschen.) Zu implementieren:
CheckBox itemCheck = (CheckBox)view.findViewById(R.id.todo_checked);
itemCheck.setChecked(false);
itemCheck.setTag(priority);
itemCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
int idIndex = cursor.getColumnIndex(TodoTable.ID);
final int id = cursor.getInt(idIndex);
final Uri uriTodDelete = ContentUris.withAppendedId(TodoTable.TABLE_URI,id);
Animation slideOut = AnimationUtils.loadAnimation(context,android.R.anim.slide_out_right);
slideOut.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
context.getContentResolver().delete(uriTodDelete,null,null);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
view.startAnimation(slideOut);
Das Problem ist, wenn ich löschen Sie das oberste Element der Listenansicht, die Position direkt unter Es wird gelöscht. Aber es funktioniert gut, wenn ich von unten lösche.
Wie behebe ich das? Jede Hilfe wird geschätzt.
P. Die Delete-Methode der Content Resolver-Klasse behandelt die notifyDataSetChanged() -Methode.
Bitte geben Sie Ihren Adaptercode an, damit andere das Problem diagnostizieren können. –