2013-06-13 4 views
6

Sto creando una semplice listview con un effetto scroll infinito. Mentre sto scaricando nuovi dati, voglio visualizzare una barra di avanzamento indeterminata nella parte inferiore della listview (come l'app di gmail).Aggiungi barra di avanzamento nella parte inferiore di un listview

Ci sono 2 soluzioni

  • Aggiungere il progressbar come un elemento della mia ListView, ma non mi piace questa soluzione
  • Aggiungere il progressbar in fondo alla mia ListView e mostra/nasconderlo

sarebbe dare qualcosa di simile

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <ListView 
     android:id="@+id/List_list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    <ProgressBar 
     android:id="@+id/trobber" 
     android:layout_below="@+id/List_list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:indeterminate="true" > 
    </ProgressBar> 

</RelativeLayout> 

Ma il progresso la barra non viene visualizzata quando la mia lista è più lunga della dimensione del mio schermo (in altre parole quando devo scollare).

risposta

7

utilizzare invece yourListView. addFooterView (mettere il ProgressBar View)

+0

Grazie, mi hai risparmiato un sacco di tempo! – loonis

+0

Felice di aiutarti – OWZY

+3

Dopo aver aggiunto FooterView al mio listview Sto ottenendo eccezione cast di classe quando provo a impostare un adattatore per listView ?? – codeRider

3

da elaborare, ecco come si fa:

A. Creare un file di layout XML, il nome come progress_bar_footer.xml

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

    <ProgressBar 
     android:layout_width="30dip" 
     android:layout_height="30dip" 
     android:layout_gravity="center" 
     android:indeterminateTint="@android:color/holo_green_light" 
     android:id="@+id/progressBar5"/> 

</LinearLayout> 

B. Nella tua attività,

View mProgressBarFooter = ((LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)) 
      .inflate(R.layout.progress_bar_footer, null, false); 

C. Usalo.

listView.addFooterView(mProgressBarFooter); //or 
listView.removeFooterView(mProgressBarFooter); 

Il credito va a questo John Moses' page.

+0

perfetto ........ –