Ich weiß, dass es viele Threads mit mehr oder weniger gleichen Themen gibt, aber keine von ihnen deckt meine Situation ab:
Ich bearbeite meine ListView mit einem benutzerdefinierten CursorAdapter, indem ich meine benutzerdefinierten Zeilen verwende. Ich habe zwei Zustände für die ListView: Der erste Zustand besteht nur aus Texten in den Zeilen; Der zweite Zustand hat eine Lösch-Schaltfläche in jeder Zeile. Der Wechsel zwischen zwei Zuständen ist eine Schaltfläche am unteren Rand der Ansicht.
Was ich versuche zu erreichen ist: Im ersten Zustand, wenn ich auf die Zeile klicke, sollte der Bildschirm zu einer anderen Ansicht wechseln. Im zweiten Zustand, wenn ich auf die Schaltfläche Löschen klicke, sollte die ausgewählte Zeile aus der Datenbank gelöscht werden, die ListView sollte neu gefüllt werden, und nichts sollte passieren, wenn ich auf einen anderen Teil der Zeile als die Löschtaste drücke.
Ich weiß, wie man ein Item löscht und das ListView danach neu auffüllt und ich weiß, wie ich zu einer anderen Ansicht wechseln kann, wenn ich auf die Zeile im ersten Zustand klicke; aber ich konnte die beiden nicht kombinieren. Ich verwende folgende Methode, um die ID und Position der Zeile zu erhalten:
%Vor%Ich habe versucht, einige if-Anweisungen zu verwenden, um die Bedingung für die gelöschte Schaltfläche oder die geklickte Zeile zu erhalten, aber es hat nicht funktioniert.
Die erste Frage ist offensichtlich: Wie kann ich es zum Laufen bringen?
Die zweite Frage lautet: Im zweiten Zustand, wenn ein Teil der Reihe gedrückt wird, außer der Schaltfläche zum Löschen, wird auf die andere Ansicht umgeschaltet. Wie kann ich das verhindern? Ich habe versucht, .setClickable, .setPressed, .setSelected Attribute der Zeile auf false setzen, aber es hat nicht geholfen.
Vielen Dank für Ihre Antworten im Voraus.
Im zweiten Zustand, wenn ein Teil der Reihe gedrückt wird, außer der Schaltfläche zum Löschen, wechselt die Anzeige zur anderen Ansicht. Wie kann ich das verhindern?
Haben Sie einfach einen Listener für den deleteButton
%Vor%In der Methode getView () versehen Sie das ListItem mit der Position
%Vor% Konvertiere das getTag()
Objekt in eine Ganzzahl
In OnClickListener()
löschst du dann den Gegenstand
Ich denke, der folgende Code ist besser für die zweite Frage:
%Vor%