Intereting Posts
Android-адаптер с несколькими getView Что происходит с потоком, поскольку onDestroy вызывается, когда устройство вращается Какие модели смартфонов Samsung не хватает времени для ввода типа html5 = «номер»? Пользовательское изображение вместо логотипа в ActionBar / ActionBarSherlock Как отключить синюю тень в прокрутке (приложения для Android). База данных sqlite на персидском языке Поведение нижнего листа должно отображаться только при нажатии кнопки? Не удается заставить плагин для привязки данных Android Два просмотра списка одновременно с половиной сдвига Как исправить Метод startActivity (Intent) не определен для новой синтаксической ошибки View.OnClickListener () Google IAP возвращает короткий токен покупки для проверки Тест эспрессо для уведомления о появлении Твердые черные экраны при вызове Dialogs в onCreate () Как исправить IncompatibleClassChangeError во время Android Jackson Parsing, используя аннотации в Android Lollipop? Eclipse: adt не смог создать экземпляр класса com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor

Бесконечный Gridview

Я просмотрел множество реализаций бесконечных списков. Одним из них является https://github.com/commonsguy/cwac-endless

Все они используют listviews. И все они просто добавляют еще одну строку в список. Но когда мы рассматриваем Gridview (например, в Google Play Store) и добавляем загрузочный вид в качестве другого элемента в сетке, он выглядит уродливым. Как я могу добиться того же в Play Маркете?

Я пишу прослушиватель прокрутки и устанавливаю этот прослушиватель прокрутки в виде сетки. Пожалуйста, исправьте меня, если обнаружена ошибка.

НАПРИМЕР:

final GridView g = (GridView) findViewById(R.id.myGrid); g.setAdapter(new ImageAdapter(this)); EndlessScrollListener scrollListener=new EndlessScrollListener(g,new RefreshList() { @Override public void onRefresh(int pageNumber) { System.out.println("On Refresh invoked.."); } }); g.setOnScrollListener(scrollListener); 

////////////////////////////////////////////////// ///////////////////////

 import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.GridView; public class EndlessScrollListener implements OnScrollListener { private GridView gridView; private boolean isLoading; private boolean hasMorePages; private int pageNumber=0; private RefreshList refreshList; private boolean isRefreshing; public EndlessScrollListener(GridView gridView,RefreshList refreshList) { this.gridView = gridView; this.isLoading = false; this.hasMorePages = true; this.refreshList=refreshList; } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (gridView.getLastVisiblePosition() + 1 == totalItemCount && !isLoading) { isLoading = true; if (hasMorePages&&!isRefreshing) { isRefreshing=true; refreshList.onRefresh(pageNumber); } } else { isLoading = false; } } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } public void noMorePages() { this.hasMorePages = false; } public void notifyMorePages(){ isRefreshing=false; pageNumber=pageNumber+1; } public interface RefreshList { public void onRefresh(int pageNumber); } } 

Ну, чтобы буквально использовать ту же технику, что и в EndlessAdapter , вы можете добавить N элементов в сетку, где N – ваше количество столбцов.

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

Используйте относительный макет, подобный этому, и обработайте видимость в слушателе onscroll

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <GridView android:id="@+id/myGrid" android:layout_width="match_parent" android:layout_height="match_parent" android:columnWidth="60dp" android:gravity="center" android:horizontalSpacing="10dp" android:numColumns="auto_fit" android:padding="10dp" android:stretchMode="columnWidth" android:verticalSpacing="10dp" /> <View android:id="@+id/footer" android:layout_width="match_parent" android:layout_height="20dp" android:layout_alignBottom="@+id/myGrid" android:background="@android:color/white" /> </RelativeLayout 

>