Ich habe eine benutzerdefinierte Listenansicht, in der jede Zeile ein Kontrollkästchen und einen Text enthält. Nun, was ich will, dass, wenn eine Checkbox der Listview-Zeile aktiviert ist, so dass andere Checkbox in einer anderen Zeile, wenn aktiviert, wird automatisch gelöscht werden. (dh nur eine Checkbox sollte einzeln ausgewählt werden) .wie sollte ich das tun.
Bisher habe ich Folgendes getan:
%Vor%Sie müssen den ausgewählten Gegenstand und Code entsprechend verfolgen.
%Vor% Versuchen Sie, alle Elemente zu ändern boolean false false Ausgewähltes Element nach notify adapter ausschließen und auch ViewHolder
Pflegen Sie eine Variable:
%Vor%Immer wenn Sie versuchen, ein Kontrollkästchen zu aktivieren, überprüfen Sie diese Variable, wenn es -1 ist, aktivieren Sie das Kontrollkästchen und speichern Sie die Position des Listenelements in der geprüften Variablen, wenn Sie versuchen, ein anderes Kontrollkästchen erneut zu überprüfen, wenn die Variable ain ' t gleich -1, deaktivieren Sie zunächst das Kontrollkästchen an der Position, die in der geprüften Variablen gespeichert ist, und aktivieren Sie dann das Kontrollkästchen an der aktuellen Position und speichern Sie die aktuelle Position in der geprüften Variablen
Einfache Pflege Ihrer Auswahl Holen Sie sich Ihre Auswahl aus dem Modell.
%Vor%Bereiten Sie Ihre Ansicht so vor:
%Vor%Setzen Sie jetzt in Ihrer Aktivität oder im Fragment den Adapter und tun Sie etwas wie folgt:
%Vor% Beachten Sie, dass Ihre gesamte Arbeit von adpt.notifyDataSetChanged()
erledigt wird. Hoffe, das hilft.
Das Arbeiten mit getView (wie die meisten der geposteten Antworten) funktionierte bei mir nicht richtig. Es war nicht reaktionsschnell genug. Manchmal wurde das vorherige Kontrollkästchen deaktiviert, manchmal nicht.
Das hat perfekt für mich funktioniert:
Zuerst müssen wir die Position aller zuvor markierten Checkboxen speichern:
%Vor%Im onItemClick-Listener deaktivieren wir die Kontrollkästchen all , bevor wir das ausgewählte Kontrollkästchen aktivieren.
%Vor%