Autore Topic: ListView espansibile, in stile expansebleListView  (Letto 566 volte)

Offline FeRoX

  • Utente junior
  • **
  • Post: 67
  • Respect: +2
    • Mostra profilo
ListView espansibile, in stile expansebleListView
« il: 16 Marzo 2012, 13:44:50 CET »
0
Ciao a tutti, ho cercato tutta la mattina di creare una listview particolare che voglio ottenere, ma non ci sono riuscito, quindi vi chiedo a voi un'aiuto.
Io voglio ottenere questo:





Cioè, ho una lista di esami, e cliccando sopra un esame si espande tutto e appaiono altre informazioni.
Ho cercato di farlo con una expandablelistview, ma ho notato che non è possibile far apparire il tutto come voglio io.
Qualcuno saprebbe come fare???
Grazie.
« Ultima modifica: 16 Marzo 2012, 13:48:04 CET da FeRoX »

Offline FeRoX

  • Utente junior
  • **
  • Post: 67
  • Respect: +2
    • Mostra profilo
Re:ListView espansibile, in stile expansebleListView
« Risposta #1 il: 16 Marzo 2012, 20:52:23 CET »
0
Ho trovato questo topic dove c'è proprio quello che cercavo
cambiare layout listview - Android Developers Italia
però purtroppo ho un problema.
In pratica creo una listview, e ogni volta che clicco su un item della lista, metto la visibilità di un linearlayout a View.GONE o View.VISIBLE, e questo crea l'effetto di vedere una sorta di expandeblelistview.... ma con una listview
Codice (Java): [Seleziona]
lvEsami.setOnItemClickListener( new OnItemClickListener() {
               
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                    LinearLayout ll = (LinearLayout)v.findViewById(R.id.llExpand);
                    if(ll.getVisibility()!=View.GONE){
                         
                        ll.setVisibility(View.GONE);
                         expandedExams.put(position, false);
                    }else{
                       
                        expandedExams.put(position, true);
                         ll.setVisibility(View.VISIBLE);
                    }
            }
    });

Il file xml invece è fatto nel seguente modo:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical" >
   

    <RelativeLayout
       android:layout_width="fill_parent"
       android:layout_height="wrap_content" >

        <TextView
           android:id="@+id/tvVoto"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentRight="true"
           android:layout_centerVertical="true"
           android:paddingRight="3dip"
           android:text="30L"
           android:textSize="20dip" />

        <TextView
           android:id="@+id/tvCFU"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_toLeftOf="@+id/tvVoto"
           android:layout_centerVertical="true"
           android:text="12"
           android:paddingRight="13dip"
           android:textSize="12dip" />


        <TextView
           android:id="@+id/tvNomeEsame"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:layout_centerVertical="true"
           android:layout_toLeftOf="@+id/tvC2"
           android:text="Algoritmi e strutture dati"
           android:textSize="17dip" />

        <TextView
           android:id="@+id/tvC2"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_centerVertical="true"
           android:layout_toLeftOf="@+id/tvCFU"
           android:text="CFU: "
           android:textSize="12dip" />

    </RelativeLayout>
   

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

        <TextView
           android:id="@+id/textView1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:text="Data: " />

        <TextView
           android:id="@+id/tvData"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_toRightOf="@+id/textView1"
           android:text="25/12/2012"
           android:textColor="#ffffff"
           android:textSize="14dip" />

    </RelativeLayout>

     <RelativeLayout
       android:id="@+id/relativeLayout2"
       android:layout_width="match_parent"
       android:layout_height="wrap_content" >

        <TextView
           android:id="@+id/textView2"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:text="Professore: " />

        <TextView
           android:id="@+id/tvProfessore"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_toRightOf="@+id/textView2"
           android:text="Giovanni Rossi"
           android:textColor="#ffffff"
           android:textSize="14dip" />

    </RelativeLayout>
   
      <RelativeLayout
       android:id="@+id/relativeLayout3"
       android:layout_width="match_parent"
       android:layout_height="wrap_content" >

        <TextView
           android:id="@+id/textView3"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:text="Commento: " />

    </RelativeLayout>
   
      <TextView
           android:id="@+id/tvCommento"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_toRightOf="@+id/textView3"
           android:text="tutto bene"
           android:textColor="#ffffff"
           android:textSize="14dip" />
     
      </LinearLayout>

</LinearLayout>

Ora il primo relativelayout è cio che si vede sempre, mentre il linearlayout llExpand è quello che va ocultato o visto.
impostando android:visibility="gone" nel LinearLayout llExpand (file XML) (per non far vedere il linearLayout all'inizio) succede che quando clicco sull'item della listview e imposto llExpand.setVisibility(View.VISIBLE) non succede niente, non appare... se invece non metto la visibilità iniziale in GONE, allora mi permette di occulatare o vedere llExpand...
Qualcuno sa perche???
Grazie.

Offline FeRoX

  • Utente junior
  • **
  • Post: 67
  • Respect: +2
    • Mostra profilo
Re:ListView espansibile, in stile expansebleListView
« Risposta #2 il: 17 Marzo 2012, 11:48:29 CET »
0
Ok ho risolto, il problema era che la listview che fa vedere tutto.
Nel file xml era impostato:
android:layout_height="wrap_content"
Quindi iniziando tutto con visibilità View.GONE, il layout si adattava a una grandezza molto più piccola.
Consiglio a chi vuole ottenere questo effetto di visitare il seguente link:
cambiare layout listview - Android Developers Italia