0

Ich implementiere eine benutzerdefinierte Recyclerview mit Schalter für die Artikelauswahl. Ich habe eine "Select All" -Option in der rechten Ecke der App-Leiste (obere Leiste). Ich möchte dem Benutzer ermöglichen, die Option Alles auswählen zu verwenden und auch die Auswahl einzelner Elemente in der Recycleransicht zuzulassen.Alle Optionen auswählen und Einzelartikel auswählen Recyclerview Android

Ich weiß nicht, wie Sie individuelle Auswahl zusammen mit Select All implementieren. Wenn ein Element nach der Verwendung der Option Alle auswählen deaktiviert ist und wenn die Liste gescrollt wird, wird das Element automatisch ausgewählt, wenn das isSelectedAll-Flag in der Methode onBindViewHolder im folgenden Code auf true gesetzt wird.

******SELECT ALL CLICK LISTENER IN ACTIVITY CLASS****** 
mBinding.imageViewActionSelect.setOnClickListener(v -> { 
    mAdapter.selectAll(); 
}); 

******ADAPTER CLASS****** 
public void selectAll() { 
    isSelectedAll = true; 
    notifyDataSetChanged(); 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    if (isSelectedAll) { 
     holder.mSwitchView.setChecked(true); 
    } 
    else 
     holder.mSwitchView.setChecked(false); 
} 
+1

Versuchen Sie, diese Flagge im Collection-Modell hinzufügen, so dass Sie die Kontrolle darüber haben –

+0

Haben Sie ein Feld hinzugefügt, um individuelle Mehrfachauswahl Zustand zu behandeln? Wenn ja, dann setze einfach alle Artikelfeldwerte auf "wahr" und wenn die Auswahl aufgehoben wird, ändere diesen Feldwert auf "false". Sie müssen jede Elementauswahl basierend auf diesem Feld anzeigen, damit Ihr aktuelles Problem gelöst wird. –

+0

Was ist das Ergebnis mit Ihrem tatsächlichen Code? – Cochi

Antwort

0

Erste, Fügen Sie eine Variable isSelected auf Ihre POJO Klasse und dann, während Sie alle Option auswählen, machen diese Variable wahr, indem Sie Ihre Liste der Elemente in einer Schleife ausgeführt wird, und dann adapter.notifyDataSetChanged nennen (). Wenn Sie nun einzelne Elemente auswählen oder die Auswahl aufheben, müssen Sie die Variable isSelected entsprechend Ihren Anforderungen auf true oder false setzen und nicht vergessen, notifyDataSetChanged() aufzurufen. Du bist startklar.

0

Sie könnten diese FastAdapter-Bibliothek verwenden: https://github.com/mikepenz/FastAdapter. Single Select ist einfach, es ist bereits für Sie erledigt. Für die Mehrfachauswahl können Sie einfach alle Ihre Elemente durchlaufen und mAdapter.toggleSelection(position) anrufen. Wenn Sie die ausgewählten Elemente benötigen, können Sie einfach mAdapter.getSelection() anrufen. Es ist so einfach, keine Notwendigkeit, selbst Sachen zu tun