ArrayAdapter der Custom Objekte hält nach custom Attribut der Objekte filterbar machen?

  • Hi zusammen!


    Ich habe bereits eine Activity mit mehreren ListViews, die bereits Problemlos Daten anzeigen und zur Auswahl bereitstellen.
    Nun habe ich den Fall, dass bei Auswahl von Items in der ersten ListView, die darauffolgenden ListViews gefiltert werden sollen.


    Konkret wählt der User im ersten ListView sein "Land" aus und daraufhin sollen die anderen ListViews nur noch Elemente die zum entsprechenden Land passen anzeigen.


    Ich nutze für alle Listen einen ArrayAdapter der jeweils Objekte(typen) wie z.B. Country(Single Choice Mode), Category, Location, Company hält.


    Wenn der User nun seine Country ausgewählt hat, komme ich an das Country Objekt, welches in einem Attribut den CountryKey stehen hat. z.B. "DE", oder "US".


    Eine Location hat auch ein Attribut Country, wo ebenso z.B. "DE" drinne steht. Nun möchte ich nachdem der User sein Land ausgewählt hat, die Location Liste neu sortieren, und zwar sollen nur die Location Objekte enthalten sein, die im Country Attribut den jeweiligen Countrykey aus der Vorauswahl haben. z.B. "DE".


    Wie kriege ich das am einfachsten hin, ohne direkt einen eigenen Adapter (der Filterable implementiert) implementieren zu müssen? Oder führt da kein Weg dran vorbei?

  • Ich denke mal der eigene Adapter, der Filterable implementiert, wäre der einfachste Weg.


    Alternativ kannst du auch an Stelle der Arrays ein anderes Datenformat wählen. Beispielsweise eine Map mit dem Key des CountryCodes und einer ArrayList der dazugehörigen Objekte.


    So kommst du dann über den Key an die Objekte ran. Und da diese in einer ArrayList liegen läuft ja vielleicht dein fertiger ArrayAdapter noch.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!