2012-07-15 20 views

Odpowiedz

0

Nie, przepraszam, GridView nie oferuje tego rodzaju możliwości.

Jeśli chcesz uzyskać wpis "kliknij tutaj, aby uzyskać więcej", po prostu leniwy załaduję dane po osiągnięciu końca bieżących danych siatki. Możesz zajrzeć na stronę CommonsWare EndlessAdapter i spróbować dostosować ją do GridView.

+1

Nie chcę wpisu "kliknij tutaj, aby uzyskać więcej". Chcę tylko pokazać komunikat "Ładowanie ...", aby poinformować użytkownika o tym, że żąda więcej elementów z serwera. Te elementy mogą trochę załadować. Czy nie ma sposobu, aby element był dwumianowy? – sofiaguyang

0

Możesz spróbować użyć układu Względny, umieścić widok siatki i utworzyć układ Liniowy z atrybutem android:layout_alignParentBottom="true" i umieścić to, co chcesz pod widokiem Siatki, co jest według mnie tym, czego chcesz.

+0

Ale to nie sprawi, że będzie gładko jak w Google Play. – sofiaguyang

+0

To, co robią, to inny plik xml o nazwie coś_footer. Wygląda "płynnie", ponieważ sprawia, że ​​styl jest taki sam. Ale nie ma go w GridView. – 0gravity

+0

Możesz pobrać apk Google play, zmienić jego nazwę na .zip i wypakować pliki xml, których użył. – 0gravity

0

Możesz używać nieskończonego odbiornika przewijania jako słuchacza przewijania gridview. Używając odbiornika przewijania, można uzyskać aktualną pozycję. po osiągnięciu końca pokazuje niestandardowy widok ładowania i po zakończeniu ładowania z sieci (AsyncTask lub Loader zakończone) możesz ukryć widok ładowania.

6

Android BucketListAdapter

Jest to realizacja adapterem goni, podobny do tego, co widać w aplikacji Google Play. Ma on układ kratowy o nazwie z elementów listy, z tą przewagą, że nadal można używać nagłówków i stopek o numerach - coś, co nie jest możliwe w standardowym GridView w wersji .

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

+0

Dziękuję za list-adapter, potrzebuję tego samego. Nie obsługuje jednak elementu naciśniętego i element jest przezroczysty. Wygląda na to, że muszę zastąpić ListView, aby dostosować to zachowanie. –

0

Można to wykorzystać, Korzystanie OnScrollListener do monitorowania pozycji przewijania podczas przewijania do ostatniego elementu, można Controll widoczność widoku załadunku.

 @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> 
Powiązane problemy