Ich habe mehrere Objekte in RecyclerView
und für jedes Element wurde ein long
Wert gespeichert. Ich verwende FastAdapter als Adapter für meine RecyclerView
.
Angenommen, es gibt 7 Elemente in RecyclerView
mit den langen Werten: 11122
, 12321
, -98811
, 8870
, -88009
, 3398
und -22113
.
Also, was ich tun möchte ist, ich möchte die Elemente basierend auf den oben angegebenen langen Werten mit dieser Logik filtern:
%Vor%Ich habe verschiedene Dinge ausprobiert, aber es hat nichts geklappt.
UPDATE 1 : Elemente sind hier eine Art verschiedener Daten, die in CardView
gespeichert sind und dann in RecyclerView
angezeigt werden. Jede Karte enthält unterschiedliche Daten, von denen eine die oben angegebenen long
-Werte sind. Ich möchte die Daten basierend auf diesen long
-Werten filtern, die auf jeder Karte basierend auf der oben angegebenen Logik gespeichert sind.
Bitte helfen Sie mir bei diesem Problem und schlagen Sie einen Algorithmus oder Code vor, mit dem ich das erreichen kann.
Bei der Menge der angegebenen Informationen kann ich nur annehmen, dass l
ein ausländischer Selektorwert ist, der die Elemente steuert, die in RecyclerView
angezeigt werden. Kommentar unten, wenn dies nicht der Fall ist, werde ich versuchen, meine Antwort zu korrigieren.
Ich empfehle, eine benutzerdefinierte ViewAdapter
zu implementieren, indem Sie die Liste der Elemente und die Selektorvariable l
mit den entsprechenden Methoden einsenden:
Außerdem habe ich FastAdapter nie benutzt, aber ich nehme an, dass es einige Methoden geben muss, um sie zu überschreiben, wenn Sie ihre Klasse erweitern.
Da Sie Probleme haben, die Grundlagen der Verwendung von ViewAdapter
zu verstehen, würde ich empfehlen, eine benutzerdefinierte ViewAdapter
zu lernen und zu implementieren, bevor Sie eine Bibliothek verwenden. Hier finden Sie eine ausführliche Anleitung zum Implementieren von ViewAdapter
für RecyclerView.
Nun, nachdem Sie den ViewAdapter implementiert haben, können Sie meinen Code verwenden, um Karten herauszufiltern. Im Prinzip speichert der Code eine Liste aller erforderlichen Daten in mItemList
, während mDisplayList
eine Liste ist, in der die anzuzeigenden Elemente gespeichert werden, die jedes Mal aktualisiert wird, wenn die Benutzerpräferenz gespeichert wird von über oder unter 1000 wird eingestellt. Jetzt muss diese mAboveThousand
verwendet werden, um Daten in der RecyclerView aufzublasen.
Sogar dein sehr einfacher Code würde funktionieren. Sie können die Anzahl der Objekte in diesem Bereich zählen und die Anzahl in diesem Bereich zurückgeben. Ich schlage vor, Sie versuchen, dies ohne FastAdapter zu tun, weil das Kernkonzept der Analyse der Daten basierend auf einem Filterwert zu Recht vollkommen solide ist. Sie können die Schleife durchlaufen und sie zählen, und Sie können die Schleife durchlaufen und das n-te Element zurückgeben.
Wenn Sie FastAdapter weiterhin verwenden möchten, verfügt es über eine integrierte Filterfunktionalität (siehe Punkt 5 in der README des Projekts Beachten Sie, dass die filter
-Methode nach withFilterPredicate
und nicht davor aufgerufen werden sollte, wie dort gezeigt.
BEARBEITEN - nachdem Sie darauf hingewiesen haben, dass ich Sie vorher falsch verstanden habe - hier sind meine aktualisierten vorgeschlagenen Anweisungen:
Sie müssen die Logik des anzuzeigenden Sets auflösen (indem Sie die Kontrollkästchen im Dialog verwenden, den Sie im Kommentar erwähnt haben) und diese Informationen an den Filter übergeben, zum Beispiel:
%Vor%Und wo Sie den Adapter einstellen (bevor die obige Zeile aufgerufen wird):
%Vor%
ms
long-Werte filtern möchten, verwenden Sie ein externes l
long-Kennzeichen:
Wenn in Ihrem Code angenommen wird, dass Ihre App zu der in der Frage erwähnten if
kommt, entfernen Sie die fastItemAdapter.clear();
und anstelle der for
-Schleife mit der if
drinnen schreiben Sie
und irgendwo vor , vorzugsweise wo Sie den Adapter setzen (am wahrscheinlichsten in onCreate
von MainActivity
) fügen Sie Folgendes hinzu:
(Nehmen wir an, dass GRModeClass
die Klasse Ihrer Elemente ist und dass die long ms
die Länge ist, auf die Sie verwiesen haben, die bestimmen sollte, ob das)
Ich schätze, deine Klasse ist wie
%Vor% Nun hoffe ich, dass Sie eine Funktion haben, die aufgerufen wird, wenn Sie einen Filter in Ihre RecyclerView
setzen. Lassen Sie den Funktionsnamen toggleFilter
.
Tags und Links algorithm java android android-recyclerview fastadapter