Я потратил час, пытаясь добавить «Load More» Button
и неопределенный ProgressBar
в нижний колонтитул моего ListView
.ListView с дополнительной загрузкой и кругом ProgressBar
Воображаемый scinario работает так:
Когда кнопка нажата, ProgressBar
показан в то время как AsyncTask
загружает 20 пунктов. когда предметы вставлены в ListView
, ProgressBar
увольняется, а Button
снова появляется в нижнем колонтитуле. я пришел к следующему решению, и было бы хорошо, если у вас есть лучшее решение:
макет/progress_bar.xml
<?xml version="1.0" encoding="utf-8"?>
<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/load_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
/>
И если у вас есть следующие поля деятельности:
private ListView listview;
private Button loadMoreButton;
private ProgressBar progressBar;
после подготовки вашего списка просмотра добавить нижний колонтитул, подобный этому, (в конце activity.onCreate()
):
loadMoreButton = new Button(this);
loadMoreButton.setText("Load More");
progressBar = (ProgressBar) LayoutInflater.from(this).inflate(R.layout.progress_bar, null);
loadMoreButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//downloadItems();
listview.removeFooterView(loadMoreButton);
listview.addFooterView(progressBar);
}
});
Когда данные готовы (первая страница или последующие страницы), вызовите следующее после обновления адаптера.
//adapter.notifyDataSetChanged();
listview.removeFooterView(progressBar);
listview.addFooterView(loadMoreButton);
Если у вас есть лучшие решения, просьба поделиться им в ответах.
Вместо того чтобы показывать кнопку, чтобы загрузить больше вы можете проверить погоду пользователя ScrollStateChange находится в нижней части или нет, если найден последнего индекс элемента, то вы можете показать прогресс в сноске и при загрузке полного вывода его и показать свои данные –
Я хочу, чтобы пользователь нажимал ** Load More **, чтобы уменьшить количество вызовов на сервер, если он все время прокручивается. –