Android: реализация progressbar и «загрузка …» для бесконечного списка, например Android Market

Вдохновляя Android Market, я внедрил Endless List, который загружает больше данных с сервера, когда мы доходим до конца списка.

Теперь мне нужно реализовать индикатор progressbar и «Loading ..», как показано на рисунке alt text

Пример кода, который будет вдохновлять, будет отличным.

Вот решение, которое также облегчает отображение загрузочного представления в конце ListView во время его загрузки.

Здесь вы можете увидеть classы:

https://github.com/CyberEagle/OpenProjects/blob/master/android-projects/widgets/src/main/java/br/com/cybereagle/androidwidgets/helper/ListViewWithLoadingIndicatorHelper.java – Помощник, позволяющий использовать без расширения от SimpleListViewWithLoadingIndicator.

https://github.com/CyberEagle/OpenProjects/blob/master/android-projects/widgets/src/main/java/br/com/cybereagle/androidwidgets/listener/EndlessScrollListener.java – прослушиватель, который начинает загрузку данных, когда пользователь вот-вот достигнет нижней части ListView.

https://github.com/CyberEagle/OpenProjects/blob/master/android-projects/widgets/src/main/java/br/com/cybereagle/androidwidgets/view/SimpleListViewWithLoadingIndicator.java – The EndlessListView. Вы можете использовать этот class напрямую или от него.

Добавьте onScrollListener в ListView. Когда пользователь прокручивает список, проверьте, приближается ли ListView к его концу. Если да, то выберите дополнительные данные. В качестве примера :

public abstract class LazyLoader implements AbsListView.OnScrollListener { private static final int DEFAULT_THRESHOLD = 10 ; private boolean loading = true ; private int previousTotal = 0 ; private int threshold = DEFAULT_THRESHOLD ; public LazyLoader() {} public LazyLoader(int threshold) { this.threshold = threshold; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if(loading) { if(totalItemCount > previousTotal) { // the loading has finished loading = false ; previousTotal = totalItemCount ; } } // check if the List needs more data if(!loading && ((firstVisibleItem + visibleItemCount ) >= (totalItemCount - threshold))) { loading = true ; // List needs more data. Go fetch !! loadMore(view, firstVisibleItem, visibleItemCount, totalItemCount); } } // Called when the user is nearing the end of the ListView // and the ListView is ready to add more items. public abstract void loadMore(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount); } 

Мероприятия :

 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); ListView listView = (ListView) findViewById(R.id.listView); listView.setOnScrollListener(new LazyLoader() { @Override public void loadMore(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // Fetch your data here !!! } }); } } 

Вы можете найти полную реализацию по этой ссылке

  • android - listview получить просмотр позиции по позиции
  • Push Listview, когда клавиатура появляется без настройкиPan
  • Android: кнопка «Радио» в пользовательском списке
  • При проверке флажка в listview также проверяются другие случайные флажки
  • Как запустить onListItemClick в Listactivity с помощью кнопок в списке?
  • Как я могу обновить одну строку в ListView?
  • Обнаружение прокрутки вверх и прокрутка вниз в ListView
  • Как реализовать поиск в CustomListView на основе classа classа POJO в Android?
  • Программно перейдите к определенной позиции в Android ListView
  • Использование ListView: как добавить представление заголовка?
  • SearchView In ListView с пользовательским адаптером
  • Давайте будем гением компьютера.