Listview im Fragment empfehlenswert

  • 6 Antworten
  • Letztes Antwortdatum
Jaiel

Jaiel

Dauer-User
235
Hallo

Ich habe vor eine App zu machen.
Die hat ein Surfaceview und der Benutzer steht vor einer Aufgabe. Dafür möchte ich ihm Tipps geben um das Problem zu lösen. Diese Tipps sollen gespeichert werden. Es könnten bis zu einer Million(!!!) tipps sein theoretisch. Ich möchte ihm auch die Möglichkeit geben sich diese anschauen zu kjönnen also di die er schon bekommen hat.

Dazu möchte ich ein Fragment benutzen in der ich eine Listview anzeige an Textview einfach. Die Texte speichere ich dann irgendwie entweder DB oder File(shared prefs wäre wohl nciht so gut. Naja die Tipps sind eigentlich ganz einfach zu erstellen: Er soll eine Zahl erraten und ein großer Teil der Tipps werden die Divisoren sein durch die man die Zahl ganzzahlig teilen kann immer aufsteigend: 1. tipp zum Beispiel wäe es ist durch 2 teilbar der nöchste würde dann den nächstenm Teiler bennenen und so weiter. Es gibt aber auch andere Tipps wie zum beispiel Quersumme ist x oder das Xte Digit ist Y oder so.

Kurzum habe ich entschieden es einfach zu machen und diese tipps per string zu speichern einfach.

So das Problem ist jetzt ob es gut ist dafür so viele Views zu entwerfen da irgendwann mal ein OOM kommen kann wenn ich zu viele Views aufspanne.

Habt ihr da eine andere Lösung dafür? Sollte ich leieber ein Custom Liste erstellen lieber die keine View objekte braucht da diese Ja schon sehr groß sein können verglichen mit selfmade klassen wo nur das nütigste enthalten ist...


P.S.: Danke dass ihr meinen schlampigen Schreibstil ertragt btw :)
 
Könntest du nicht auch immer nur eine begrenzte Anzahl von TextViews in der ListView anzeigen und mittels "weiter" und "zurück" buttons dan die nächsten Tipps aus der Datenbank laden und den Inhalt der TextViews dann verändern?
Kann mir auch nicht vorstellen das die ListView das mitmacht, wenn man durch soviele Einträge scrollen kann.
 
Ich überlege mir grad es doch nciht so einfach zu machen sondern etwas unterscheidbarer zu amchen anch der Art der Tipps....

Da die Divisoren den größten Teil ausmachen werde ich diese in ein extra fragment reintun wo ich einfach eine Textview habe die diese Zahlen dann per Komma getrennt darstellt. Damit wären dann schon mal 99% der Tipps abgedeckt :)

Den Rest werde ich wohl in "Generelle Tipps" und "spezielle Tipps" einordnen
 
Die ListView (oder RecyclerView) macht das doch schon selbst!
Du kannst ohne Probleme so viele Elemente in einen Adapter reinknallen, die ListView rendert und instanziiert nur die Views die man sieht (plus ein paar oberhalb und unterhalb des Screens für verzögerungsfreies scrollen)
Also die View selbst ist kein Problem. Bottleneck "könnte" (ich kanns mir bei den Daten nicht vorstellen) der Adapter sein. Da gibt es aber schon Implementierungen für. (z.B. commonsguy/cwac-endless · GitHub bei dem du definierst wie die Datennachgeladen werden sobald man ans "Ende" der Liste kommst)

edit: Die Tipps selbst würde ich tatsächlich als Datei in der APK mitliefern und beim ersten Start (und jedem Update) in die DB laden, da die DB potentiell schneller damit ist nur bestimmte Tipps zu laden, die angezeigt werden sollten.
 
  • Danke
Reaktionen: Jaiel
OK muss ich mal nochmal evaluieren was am besten ist.

Ich werde einfach am Anfang dann wie du gesagt hast alle nötigen strings generieren und in eine DB packen.

Und lade jeden freigeschalteten Hinweis einfach in den Adapter. Wenn schief läuft dann läuft eben schief :)


Edit: ich muss ja trotzdem die views instanzieren um sie mit Text zu füllen. Wie groß ist denn so ein view Objekt hoffe bei 1 Million klappt das sytem nicht zusammen
 
Zuletzt bearbeitet:
Nein du musst keine 1 Millionen Views instanziieren.
Schau dir mal an wie ListView + Adapter funktioniert. Stichwort View recycling, ViewHolder und bindView. (Danach googlen)

grob: Das Instanziieren ist vom Verwenden entkoppelt. Der Adapter sagt dir er braucht eine neue View, wenn er aber schon eine passende hat gibt er dir die mit und du tauschst nur den Text aus.
 
  • Danke
Reaktionen: Jaiel
OK muss ich mir mal angucken. Dachte ich speise ihn gleich am anfang mit allen Informationen was jede view enthält
 
Zurück
Oben Unten