Бесконечный 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 

>

Intereting Posts
Ошибка в файле maven pom xml: создание проекта Android RecyclerView: изменение размера анимированного объекта Какое имя файла используется по умолчанию для общих настроек? Android: fitsSystemWindows = "true" имеет проблемы с использованием DrawerLayout и режима immersive Как сохранить нижнюю навигационную панель от нажатия на клавиатуре Как очистить SurfaceTexture после использования с MediaPlayer? Почему мой макет полностью перерисовывается, когда я аннулирую одно из его представлений? После обновления градиента до 2.10 не удается запустить приложение Изменить размер байтового массива в android Как сделать готовый файл APK для публикации означает экспорт? И каков параметр для установки? Я хочу получить profilepicture whatsApp, но только получить имя и контактную информацию? Внутреннее и внешнее хранилище Android Меню, такое как SKOUT и Sliding от One View to Another прикосновением к Android Невозможно воспроизвести обратный WAV-файл с помощью MediaPlayer Как создать подсказку EditText как текст с изображением в android