0
単純な問題かもしれませんが、その前に何時間も無駄にしています。リスト全体が読み込まれ、進行状況ダイアログにアクセスできない"より多くの負荷を必要とする"機能。データ全体を取得すると進行状況のダイアログが表示されない
ここに私のコードは
adapter = new MainAdapter(MainActivity.this, R.layout.main_row_item, totalMains);
setListAdapter(adapter);
QueryOptions queryOptions = new QueryOptions();
queryOptions.setRelated(Arrays.asList("message"));
BackendlessDataQuery query = new BackendlessDataQuery(queryOptions);
Backendless.Data.of(Main.class).find(query, new LoadingCallBack<BackendlessCollection<Main>>(this, getString(R.string.loading_mains), true)
{
@Override
public void handleResponse(BackendlessCollection<Main> mainsBackendlessCollection)
{
mains = mainsBackendlessCollection;
addMoreItems(mainsBackendlessCollection);
super.handleResponse(mainsBackendlessCollection);
}
});
ListView list = (ListView) findViewById(android.R.id.list);
list.setOnScrollListener(new AbsListView.OnScrollListener()
{
@Override
public void onScrollStateChanged(AbsListView view, int scrollState)
{
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
if(needToLoadItems(firstVisibleItem, visibleItemCount, totalItemCount))
{ progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage( "...待って、より多くのデータをロード")です。 progressDialog.setIndeterminate(false); progressDialog.setCancelable(true); progressDialog.show();
isLoadingItems = true;
mains.nextPage(new LoadingCallBack<BackendlessCollection<Main>>(MainActivity.this)
{
@Override
public void handleResponse(BackendlessCollection<Main> nextPage)
{
progressDialog.dismiss();
mains = nextPage;
addMoreItems(nextPage);
isLoadingItems = false;
}
});
}
}
});
}
private boolean needToLoadItems(int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
return !isLoadingItems && totalItemCount != 0 && totalItemCount - (visibleItemCount + firstVisibleItem) < visibleItemCount/2;
}
private void addMoreItems(BackendlessCollection<Main> nextPage)
{
totalMains.addAll(nextPage.getCurrentPage());
adapter.notifyDataSetChanged();
}
}
私はアンドロイドで新しいです..
あなたの質問を言い換えてください。正確に何を試してみましたか? – IceFire
リスト全体がバックエンドからロードされた後にスクロールすると進行状況ダイアログが表示されるが、それ以上ロードすることはできないという問題があるので、データのリストがすべてロードされると進行状況ダイアログを停止する方法はわかりません。 –
進行状況ダイアログを停止するには、進行状況ダイアログクラスのdismissメソッドを使用します。却下する前にダイアログがヌルでないことを確認してください。同じことを確認するには、ifステートメントを使用します。 –