Domanda

Domanda di algoritmo qui.

Sto creando un'app che mostra un documento legale, con schede per la navigazione (TOC, segnalibri, ecc.). All'interno della scheda TOC, devo mostrare un contenuto multilivello. Al 'Leaf "del TOC, devo mostrare un TextView

Quindi, avrei potuto:

Tab1: Elenco -> Elenco -> Elenco -> Elenco -> Elenco -> TextView

o

Tab1: Elenco -> Elenco -> Elenco -> TextView

o

Tab1: Elenco -> TextView

A seconda del capitolo, sezione, sottosezione, struttura della sottosubsezione del libro che sto mostrando.

Ora, non importa quanto sei profondo, il tabhost deve essere sempre presente, per fornire la navigazione principale. (Sì, ho chiesto e devo usare le schede, non un menu.)

La domanda:

Come si implementa l'elenco ricorsivo all'interno del framelayout di una scheda? O dovrei usare un elenco di schede come schede e non usare il tabhost?

Idee?

Grazie!
llappall

È stato utile?

Soluzione

Bene. Numero uno che non puoi mettere ListViews dentro ListViews, ScrollViews, GridViews o qualsiasi cosa scorrevole per quella materia (cioè a ListView L'articolo non può essere ListView). Potrebbe compilare, potrebbe funzionare, ma i risultati non saranno ciò che ti aspetti o desideri. Questo perché a ListView non può avere un'altezza che è impostata su WRAP_CONTENT.

Puoi avere un elenco a due livelli (ExpandableListView) ma se hai bisogno di più livelli di quello che dovrai implementare la funzionalità tu stesso estendendo ListView o ExpandableListView.

Puoi anche avere elenchi sezionati ed elenchi con più tipi di elementi, ma non è possibile utilizzare i componenti SDK predefiniti per ottenere un elenco a 5 livelli.

Numero due: sì, puoi avere un ListView dentro a TabHost. Non sarai in grado di usare un ListActivity, ma questo significa solo che dovrai chiamare il ListView Metodi direttamente:

ListView myList = findViewById(R.id.myList);
myList.setAdapter(myListAdapter);

Invece di chiamare l'integrazione ListActivity metodi.

Posiziona il tuo ListView dentro il FrameLayout Nel tuo file di layout. Se hai tre schede e il ListView è il primo elemento all'interno del FrameLayout, quindi verrà visualizzato come contenuto per la prima scheda. Se è il secondo elemento, sarà il contenuto per la seconda scheda e così via.

L'unico modo in cui è possibile implementare un elenco ricorsivo con componenti integrati sarebbe usare un singolo ListView, quindi modificare il contenuto dell'adattatore del ListView Quando un utente seleziona un elemento (essenzialmente un menu di drill-down utilizzando un singolo ListView). Dovresti anche prendere il pulsante di schiena con onBackPressed Al fine di consentire all'utente di risalire l'elenco o fornire un pulsante di schiena da qualche parte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top