2012-07-15 3 views
5

В ListView есть метод addFooterView, который полезен для показа загружаемого сообщения. Но у GridView этот метод отсутствует. Итак, как добавить нижний колонтитул в GridView, как показано в Google Play? Google Play loading footer viewЧто такое addFooterView для GridView?

ответ

0

Нет, извините, GridView не предлагает такого рода возможности.

Если вам нужна запись «нажмите здесь для получения дополнительной информации», я бы просто ленил бы загрузить данные после достижения конечных данных сетки. Вы можете посмотреть CommonsWare EndlessAdapter и попытаться адаптировать его к GridView.

+1

Я не хочу вводить «нажмите здесь для более подробной информации». Я просто хочу показать сообщение «Загрузка ...», чтобы пользователь знал, что на сервере больше запросов. Этим элементам может потребоваться некоторое время для загрузки. Разве нет способа сделать диапазон позиций двух столбцов? – sofiaguyang

0

Вы можете попробовать и использовать Относительную компоновку, поместить сетку и сделать линейную компоновку с атрибутом android:layout_alignParentBottom="true", и она поместит все, что вы захотите, под грид-представление, которое, как я думаю, является тем, что вы хотите.

+0

Но это не сделало бы его бесшовным, как в Google Play. – sofiaguyang

+0

У них есть другой файл xml, называемый something_footer. Он выглядит «бесшовным», потому что он делает стиль тем же. Но не внутри GridView. – 0gravity

+0

Вы можете загрузить приложение Google play apk, переименовать его в .zip, извлечь его и посмотреть на файлы xml, которые они использовали. – 0gravity

0

Вы можете использовать бесконечный прослушиватель прокрутки в качестве прослушивателя прокрутки сетки. Используя прослушиватель прокрутки, вы можете получить текущую позицию. когда конец достигнут, покажет пользовательское окно загрузки, и когда загрузка из сети будет завершена (AsyncTask или Loader завершена), вы можете скрыть представление загрузки.

6

Android BucketListAdapter

Это реализация адаптера списка ведра, аналогично тому, что вы видите в приложении Google Play. Он имеет сетчатый макет элементов списка, с тем преимуществом, что вы все еще можете использовать список верхние и нижние колонтитулы - что-то, что невозможно со стандартом GridView.

Ссылка: https://github.com/rzsombor/bucket-list-adapter

+0

Спасибо за список-адаптер, мне нужно то же самое. Но он не поддерживает нажатый элемент и прозрачный элемент. Похоже, мне нужно переопределить ListView, чтобы настроить поведение. –

0

Вы можете использовать это, используйте OnScrollListener для контроля положения прокрутки, при прокрутке до последнего пункта, вы можете контролировать видимость зрения загрузки.

 @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> 
Смежные вопросы