Gefiltert ListView onItemClick gibt Element an der ursprünglichen position
Ich habe eine listview mit benutzerdefinierten Zeilen aufgefüllt, die aus einem benutzerdefinierten BaseAdaptor
. Klicken Sie auf jede Zeile, öffne ich ein neues Activity
.
Hat alles gut funktioniert, bis ich fügte hinzu, die filter-Funktionalität zu dieser Liste. Wenn ich in der Liste suchen und DANN auf ein Element klicken, wird es nicht öffnen Sie die Aktivität, zu der die gefilterten Ergebnisse. Es öffnet sich eine Handlung in Bezug auf das Element an dieser position in der Ursprünglichen Liste.
ZB. -
Original-Liste : AA, BA, CC, DA, ED, FF
Suche : 'A'
Die gefilterten Ergebnisse: AA, BA, DA
Aber wenn ich auf Element DA
es öffnet sich die Aktivität für CC
. Extrem irritierend. Ich habe angerufen notifyDataSetChanged()
auf den adapter.
Ich Hänge schon länger an diesem problem irgendwann. Ich weiß wirklich nicht, wie es zu lösen.
Ich habe nicht nach dem code, weil es eine ganze Menge code, und ich wirklich nicht wollen, um alles hier.
Wenn jemand kann mir eine Vorstellung davon, wie zu wählen Sie das Element aus der GEFILTERTEN Liste.. würd Es b groß.
Dank!
Sagen Sie mir, wenn etwas anderes erforderlich ist, um zu verstehen, meine Frage!
- Ich möchte auch hinzufügen, dass ich gesucht hab auf stackoverflow für diese Art von Fragen, und Sie sind den Umgang mit aktivierten Elemente, das ist nicht das, was ich will. Ich will einfach starten Sie eine personalisierte Aktivität auf Klick auf ein bestimmtes Element in der Liste. Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielen Dank für die Beantwortung, aber ich habe das problem gefunden.
Ich hoffe, das hilft anderen person. Mit etwas so grundlegendes, es manchmal schwer wird den Fehler zu finden und greifen wir zu viel komplizierte Wege!
Beginne meine neue Tätigkeit habe ich die position aus dem custom-Adapter ohne überschreiben der getItem () - Funktion.
Ich overrid die Funktion
und voila! die richtige Aktivität öffnen. (facepalm ich weiß..)
Danke für Eure Antworten trotzdem!
Dies geschieht, weil Ihre CustomAdapter verwenden Sie Ihre erste Cursor-nicht die gefilterte eine
verwenden Sie diese Funktion in Ihrem Adapter-definition :
und in Ihrer Berufung Aktivität verwenden
Adapter
nicht mit der gefilterten man" die Idee kam ich, da. Ich overrid meinegetItem()
im customAdaptor
- und bekam Recht. Aber ich bin nicht mit einemCursor
und Ihre Art und Weise sieht ein wenig kompliziert. Ich bin ein Anfänger 🙂