2012-07-15 16 views

Respuesta

0

No, lo siento, GridView no ofrece este tipo de capacidad.

Si desea una entrada "haga clic aquí para ver más", simplemente cargaría los datos una vez que se hayan alcanzado los datos de la grilla actual. Puede mirar CommonsWare's EndlessAdapter, e intentar adaptarlo a GridView.

+1

no quiero un "clic aquí para obtener más" entrada. Solo quiero mostrar un mensaje de "Cargando ..." para que el usuario sepa que hay más elementos solicitados del servidor. Estos elementos pueden tardar un tiempo en cargarse. ¿No hay una manera de hacer que un artículo abarque dos columnas? – sofiaguyang

0

Usted puede tratar de utilizar una disposición relativa, poner la vista de cuadrícula y hacer un diseño lineal con el atributo android:layout_alignParentBottom="true" y se va a poner lo que quieras debajo de la vista de cuadrícula, que es lo que creo que es lo que desea.

+0

Pero esto no lo haría perfecto como en Google Play. – sofiaguyang

+0

Lo que hacen es tener un archivo xml diferente llamado something_footer. Se ve "sin fisuras" porque hacen que el estilo sea el mismo. Pero no está dentro de GridView. – 0gravity

+0

Puede descargar la aplicación Google play, cambiarle el nombre a .zip extraerla y ver los archivos xml que usaron. – 0gravity

0

Puede utilizar el oyente de desplazamiento sin fin como el oyente de desplazamiento de la vista de cuadrícula. Al usar el oyente de desplazamiento puede obtener la posición actual. cuando se llega al final, muestra la vista de carga personalizada y cuando se completa la carga desde la red (AsyncTask o Loader finalizado) puedes ocultar la vista de carga.

6

Android BucketListAdapter

Ésta es una implementación de un adaptador de la lista de cubo, similar a lo que que se ve en la aplicación Google Play. Cuenta con un diseño de cuadrícula de elementos de lista, con la ventaja de que todavía puede usar los encabezados y pies de página de la lista , algo que no es posible con el estándar GridView.

Enlace: https://github.com/rzsombor/bucket-list-adapter

+0

Gracias por su adaptador de lista, necesito lo mismo. Pero no admite el elemento presionado y el elemento hace clic de forma transparente. Parece que debo anular el ListView para personalizar también el comportamiento. –

0

Puede utilizar esta, uso OnScrollListener al seguimiento de la posición de desplazamiento, cuando se desplaza a la última opción, que usted puede controlar la visibilidad de la carga de vistas.

 @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, 
      int visibleItemCount, int totalItemCount) { 
     if (mOnScrollListener != null) { 
      mOnScrollListener.onScroll(view, firstVisibleItem, 
        visibleItemCount, totalItemCount); 
     } 
     // The count of footer view will be add to visibleItemCount also are 
     // added to totalItemCount 
     if (visibleItemCount == totalItemCount) { 
      // If all the item can not fill screen, we should make the 
      // footer view invisible. 
     } else if (!mIsLoading 
       && (firstVisibleItem + visibleItemCount >= totalItemCount) 
       && mCurrentScrollState != SCROLL_STATE_IDLE) { 
      mIsLoading = true; 
      if (mOnLoadMoreListener != null) { 
       mOnLoadMoreListener.onLoadMore(); 
      } 
     } 
    } 

<LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:fillViewport="true" > 

       <com.baidu.hao123.module.video.view.LoadMoreGridView 
        android:id="@+id/gv_movie_home" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:cacheColorHint="@null" 
        android:fitsSystemWindows="true" 
        android:horizontalSpacing="10dip" 
        android:listSelector="@android:color/transparent" 
        android:numColumns="3" 
        android:paddingLeft="13dip" 
        android:paddingRight="13dip" 
        android:paddingTop="10dip" 
        android:scrollbars="none" 
        android:verticalSpacing="12dip" /> 
      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/auto_load_view" 
       android:layout_width="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:layout_height="wrap_content" 
       android:paddingTop="10dip" 
       android:visibility="gone" 
       android:paddingBottom="10dip" 
       android:gravity="center" 
       android:orientation="horizontal" > 

       <ProgressBar 
        android:id="@+id/loadingBar" 
        android:layout_width="23dip" 
        android:layout_height="23dip" 
        android:layout_marginRight="10dip" 
        android:indeterminateDrawable="@drawable/progress_small" /> 

       <TextView 
        android:id="@+id/loadingText" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:gravity="center_vertical" 
        android:text="@string/loading" 
        android:textColor="@color/color_ff555555" 
        android:textSize="@dimen/fontSize_middle" /> 
      </LinearLayout> 
     </LinearLayout> 
Cuestiones relacionadas