Autore Topic: Problema con due ListView nella stessa Activity  (Letto 881 volte)

Offline wino_7

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy s
  • Play Store ID:
    Francesco Di Iorio
  • Sistema operativo:
    Windows 7, Debian
Problema con due ListView nella stessa Activity
« il: 23 Ottobre 2011, 12:15:04 CEST »
0
Salve a tutti,
ho un problema con il layout di un'activity.
Vi posto l'Xml
Codice (XML): [Seleziona]
        <LinearLayout android:layout_height="wrap_content"
                android:layout_width="match_parent" android:id="@+id/linearLayoutLista1"
                android:orientation="vertical">

                <TextView android:textAppearance="?android:attr/textAppearanceMedium"
                        android:id="@+id/titolo1" android:layout_height="wrap_content"
                        android:layout_width="wrap_content" android:layout_gravity="center_horizontal"></TextView>

                <ListView android:id="@+id/lista" android:layout_height="match_parent"
                        android:layout_width="match_parent" android:divider="@color/blu"
                        android:dividerHeight="1px"
                        android:cacheColorHint="@color/bianco">
                </ListView>

        </LinearLayout>

        <LinearLayout android:layout_height="wrap_content"
                android:layout_width="match_parent" android:id="@+id/linearLayoutLista2"
                android:orientation="vertical">

                <TextView android:textAppearance="?android:attr/textAppearanceMedium"
                        android:id="@+id/titolo2" android:layout_height="wrap_content"
                        android:layout_width="wrap_content" android:layout_gravity="center_horizontal"></TextView>

                <ListView android:id="@+id/lista2" android:layout_height="match_parent"
                        android:layout_width="match_parent" android:divider="@color/blu"
                        android:dividerHeight="1px"
                        android:cacheColorHint="@color/bianco">
                </ListView>

        </LinearLayout>
il problema è che quando scrollo la prima ListView essa scorre solo nello spazio che intercorre tra la prima TextView e la seconda TextView.
Io invece vorrei che il tutto (cioè le due textView e le due ListView) scrollassero assieme, avevo dunque pensato di racchiudere tutto il codice del layout in una <ScrollView> e dunque rendere tutto il contenuto al suo interno scrollabile, ma mi viene segnalato un errore.
Come posso fare?

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Problema con due ListView nella stessa Activity
« Risposta #1 il: 23 Ottobre 2011, 20:58:59 CEST »
0
Ciao! L'errore che credo ti venga segnalato nel logcat è che la scrollview può avere solo una child, quindi all'interno della scrollview inserisci un linear (o relative o frame ecc) layout che racchiuda tutte le child che vuoi all'interno della scrollview.
Tuttavia, nel tuo caso, sappi che avrai dei problemi nelle gesture perché, appena l'utente cercherà di fare lo scroll della listview, scrollview e listview in questione andranno in conflitto.  ;-)

Offline wino_7

  • Nuovo arrivato
  • *
  • Post: 35
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy s
  • Play Store ID:
    Francesco Di Iorio
  • Sistema operativo:
    Windows 7, Debian
Re:Problema con due ListView nella stessa Activity
« Risposta #2 il: 24 Ottobre 2011, 16:09:48 CEST »
0
Ciao ho fatto come mi hai consigliato.
Codice (XML): [Seleziona]
<ScrollView android:id="@+id/scrollViewContainer"
                android:layout_width="match_parent" android:layout_height="wrap_content">

                <LinearLayout android:id="@+id/linearContainerScroll"
                        android:layout_width="match_parent" android:layout_height="wrap_content"
                        android:orientation="vertical">

                                <TextView android:textAppearance="?android:attr/textAppearanceMedium"
                                        android:id="@+id/titolo1" android:layout_height="wrap_content"
                                        android:layout_width="wrap_content" android:layout_gravity="center_horizontal">
                                </TextView>

                                <ListView android:id="@+id/lista" android:layout_height="wrap_content"
                                        android:layout_width="match_parent" android:divider="@color/blu"
                                        android:dividerHeight="1px" android:cacheColorHint="@color/bianco">
                                </ListView>

                                <TextView android:textAppearance="?android:attr/textAppearanceMedium"
                                        android:id="@+id/titolo2" android:layout_height="wrap_content"
                                        android:layout_width="wrap_content" android:layout_gravity="center_horizontal">
                                </TextView>

                                <ListView android:id="@+id/lista2" android:layout_height="wrap_content"
                                        android:layout_width="match_parent" android:divider="@color/blu"
                                        android:dividerHeight="1px" android:cacheColorHint="@color/bianco">
                                </ListView>

                </LinearLayout>

        </ScrollView>
il problema ora è che l'altezza delle listView non so come vengono calcolate (in particolare la prima), in foto puoi vedere quello che succede e cioè la prima listView non ha un'altezza sufficiente a visualizzare tutte le righe.
Ho provato a mettere come valore del parametro android:layout_height="wrap_content" oppure android:layout_height="match_parent" o infine android:layout_height="fill_parent" ma niente da fare...

Offline Verandi

  • Moderatore
  • Utente normale
  • *****
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Problema con due ListView nella stessa Activity
« Risposta #3 il: 24 Ottobre 2011, 17:02:40 CEST »
0
Potresti postare il layout degli item della listview?
Nel frattempo dovresti cambiare l'altezza della scrollview con fill_parent o match_parent, in quanto a te serve che si espanda fino al fondo dello schermo.

Una nota: la listview è usata per ottimizzare la visualizzazione sullo schermo di un numero di elementi troppo grande per essere visualizzato tutto in una volta sullo schermo. Se per esempio avessi 1000 elementi, la listview crea al momento solo quei 4-5 che possono essere visualizzati, senza creare 1000 view in una volta e tenerle tutte in memoria.
Nel caso avessi elementi divisi in categorie, tipo il tuo caso, si dovrebbe usare un'expandableListView, così potresti eliminare le due textView e la scrollview, oppure, se gli elementi sono pochi, puoi creare due linearLayout che facciano da container e inserire dinamicamente gli elementi che ti interessano come child tramite il metodo addView().
Il tuo metodo è comunque corretto, solo che, non avendo bisogno né dello scroll, né del riciclo delle view (caratteristiche principali della listView), è come se avessi creato due linearlayout e aggiungessi gli elementi con un addView().  ;-)