2014-09-01 7 views
0

Я разрабатываю приложение для Android для перечисления продуктов в онлайн-магазине. Для этого я использовал для этого GridView. Но внутри категории может быть большое количество продуктов, поэтому я должен реализовать такую ​​функцию, как «Загрузка по требованию», с помощью кнопки в конце сообщения gridView (Загрузить еще). Конечно, эта кнопка будет видна только в том случае, если GridView достиг конца элементов. Но я не знаю, как это сделать. Ниже мое решение пока, но кнопка не видна, когда gridview идет в конце.Добавить нижний колонтитул в GridView Android

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fillViewport="true" > 

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

     <com.twotoasters.jazzylistview.JazzyGridView 
      android:id="@+id/ebuy_list" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="10dp" 
      android:drawSelectorOnTop="true" 
      android:horizontalSpacing="15dp" 
      android:numColumns="2" 
      android:verticalSpacing="15dp" /> 

     <TextView 
      android:id="@+id/more" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="10dp" 
      android:layout_marginTop="10dp" 
      android:background="@drawable/ebuy_now_background" 
      android:clickable="true" 
      android:onClick="loadMore" 
      android:padding="15dp" 
      android:text="Load More" 
      android:textColor="@color/ebuy_color_second_strip" 
      android:textSize="25sp" /> 

    </LinearLayout> 

</ScrollView> 

Предложения или другое решение будет более чем приветствуется :)

+0

http://stackoverflow.com/questions/8876596/need-to-create-footer-for-gridview-in-android –

+0

@ user1728071 этот макет я использовал, вы имеете в виду раскладку элементы GridView – Xhulio

ответ

0

, когда вы реализуете и добавляете этот прослушиватель в свой Gridview, это обнаружит в конце Gridview, поскольку положение прокрутки было в конце списка, просто получите больше данных. А во время загрузки данных вам нужен один флаг для загрузки данных сразу, когда позиция прокрутки заканчивается. Поэтому, если данные загружаются, и в течение этого времени вы прокручиваете вверх, а затем прокручиваете вниз, тогда он не получит больше данных для дублирования.

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
    this.currentFirstVisibleItem = firstVisibleItem; 
    this.currentVisibleItemCount = visibleItemCount; 
} 

public void onScrollStateChanged(AbsListView view, int scrollState) { 
    this.currentScrollState = scrollState; 
    this.isScrollCompleted(); 
} 

private void isScrollCompleted() { 
    if (this.currentVisibleItemCount > 0 && this.currentScrollState == SCROLL_STATE_IDLE) { 
     /*** In this way I detect if there's been a scroll which has completed ***/ 
     /*** do the work for load more date! ***/ 
     if(!isLoading){ 
      isLoading = true; 
      loadMoreDAta(); 
     } 
    } 
} 
+0

Я думаю, что это лучшее решение, учитывая, что поведение по умолчанию «GridView» не поддерживает верхний и нижний колонтитулы. – Xhulio

0

Make «Load More» кнопка часть GridView - в методе GetView раздуть макет с помощью кнопки, когда «позиция» соответствует последнему элементу ,

Смежные вопросы