"State of the Art" für Tabs mit ggf. swipe Funktion

  • Antworten:5
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 141

24.04.2017, 12:28:50 via Website

Hallo zusammen,

meine Frage ist aktuell mehr konzeptioneller Natur / wie ich es am besten Umsetze nach "state of the art". Daher möchte ich mir gerne eure Meinung dazu einholen. Falls etwas unklar an meiner Beschreibung ist, bitte einfach nachhaken. Es folgt ein etwas länglicher Text.

Ich möchte für meine App 2-3 Tab's zwischen welchen ich wechseln kann; gerne auch mit swipen. Nun gibt es mehrere Möglichkeiten dies umzusetzen. Aktuell nutze ich ein TabLayout, ViewPager und Fragments für die einzelnen Seiten (3 Tabs mit swipe-funktion).

Die UI sieht erstmal so aus wie ich es möchte, allerdings bin ich dann an etwas geraten, was mich zum Überlegen gebracht hat: ich kann via XML Buttons oder ImageViews via onClick-Funktionen erstellen, welche mir in der MainActivity dann gewisse Funktionalitäten bereitstellen. So weit so gut. Falls ich aber eine simple ListView nehme, funkt mir hier (zumindest soweit ich es verstanden habe) der ViewPager dazwischen. OnClick lässt crashen, einen Listener in der MainActivity hinzufügen löst das Problem wegen dem ViewPager auch nicht.

Ich bin eigentlich davon ausgegangen, da die Fragments zum Parent gehören, ich alles in der MainActivity implementieren kann - bzw. auf die im Layout enthaltenen Elemente zugreifen kann. Um meine Liste "onClick" fähig zu machen habe ich die ListView jetzt mit .setOnItemClickListener und nem switch-case direkt im Fragment versehen.

Ist das die korrekte Lösung oder bin ich hier abseits von dem Ansatz wie es üblicherweise implementiert wird? Ich möchte später gerne eine Custom ListView mit versch. PNG's und Text pro Zeile haben, die dann bei Antippen reagiert und via. Intent ein neues Fenster öffnet. Von dem neuen Fenster soll mit mit der SQLite und einem background service "kommuniziert" werden können.

Freue mich auf Meinungen und Anregungen falls ich etwas anders angehen sollte! Danke!

Antworten
  • Forum-Beiträge: 2.902

24.04.2017, 12:40:09 via Website

Hallo LittleM,

Du must Dich ein wenig vom Gedanken trennen , den Fragmenten gegenseitig Dinge hin und herzu schieben.

Ich gehe immer folgendermassen vor :

a) ein MainActivity, abgeleitet von deiner FragmentActivity - und das Ding macht gar nichts anderes (ausser vielleicht ein paar Init-Dinge).
b) im Pager verwalte ich dann die einzelnen Fragmente, wobei jedes Fragment einzeln und abgekapselt zu sehen ist.
c) So viel wie möglich OOP anwenden und hier nicht sparsam mit Interface umgehen .
d) Für übergreiffende Variablen - immer eine SingleTon
e) ListView ürde ich an Deiner stelle erst mal kompllt rausnehmen und eher RecycleView verwenden. Und dazu dann den CustomAdapter , dem dann die ClickListener verpassen und an die entsprechenden Fragmente schicken.

Solange du OOP und die Abkapselung der Fragmente beherzigst, wird dir auch nichts abstürzen

Schau mal hier - schön und simpel umgesetzt :
https://github.com/commonsguy/cw-omnibus/tree/master/ViewPager/Nested/app/src/main/java/com/commonsware/android/pagernested

— geändert am 24.04.2017, 12:47:43

Liebe Grüße - Stefan
[ App - Entwicklung ]

LitteM

Antworten
  • Forum-Beiträge: 2.243

24.04.2017, 14:10:07 via Website

LitteM

ich kann via XML Buttons oder ImageViews via onClick-Funktionen erstellen, welche mir in der MainActivity dann gewisse Funktionalitäten bereitstellen.

Das über XML-onClick zu machen, finde ich bei der Arbeit mit Fragmenten eher den falschen Ansatz.
Schau dir mal Butterknife an. Das ist eine Lib, die die Verknüpfung zwischen den Views im XML und Variablen in deinem Fragment/Activity automatisch herstellt ("injected").
Du kannst damit auch per Annotation Methoden markieren, die als Click-Listener für bestimmte Views registriert werden sollen.

http://jakewharton.github.io/butterknife/

P.S. Bei Fragmenten an den "unbinder" denken

LitteMswa00

Antworten
  • Forum-Beiträge: 2.902

26.04.2017, 09:39:42 via Website

Hallo LittleM

es tut mir leid, allerdings "ignoriere" ich Code-Anfragen per PN grundsätzlich.

Das ist nicht auf dich persönlich bezogen - Würde ich dies einreissen lassen , würde mir irgendwann die Wurst im Kühlschrank fehlen :-)

Ich würde Dir empfehlen , deine Beiträge hier öffentlich zu stellen, dann kann sich jeder einbringen.

Im Forum gibt es jede Menge hervorragende und kompetente Programmierer

— geändert am 26.04.2017, 09:42:26

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
  • Forum-Beiträge: 141

26.04.2017, 11:06:06 via Website

Okay, werde ich in Zukunft berücksichtigen!

Was meinst du zu dem Beispiel dass du unter meinem zuvor gepostetem Link im vorigen Post findest? Im wesentlichen geht es mir darum, ob es OK ist seine Tab's auf diese Art zu implementieren oder ob es mittlerweile anders gemacht werden muss. Ich habe mich an das Beispiel gehalten. Und falls dies die Richtige Variante ist, wie würde ich es mit der "Clickbarkeit" von Listen am besten anstellen (das war ja das einzige ursprüngliche Problem)? Daten zwischen den Fragments möchte ich nicht hin und her schieben. Ich möchte sie lediglich via BroadcastReceiver (?) oder ähnlichem updaten können. Zumindest hatte ich das mal bei was früherem verwendet.

Antworten

Empfohlene Artikel