【发布时间】:2016-03-19 11:20:27
【问题描述】:
这可能是一个简单的问题,但我已经浪费了几个小时我希望在从 Backendless 加载数据后,在加载整个列表的不同时间之后,“需要加载更多”功能无法访问进度对话框.
这是我的代码
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();
}
}
我是安卓新手..
【问题讨论】:
-
能否请您重新表述您的问题?您到底尝试了哪些,哪些不起作用?
-
我遇到的问题是,从后端加载整个列表后,在滚动时显示进度对话框,但没有更多内容可以加载所以我不知道如何在所有列表中停止进度对话框数据已加载。
-
停止进度对话框使用进度对话框类的dismiss方法。请确保您的对话框在关闭之前不为空。使用 if 语句进行验证。
-
我无法获取后端的全部数据被加载,然后滚动更改进度对话框不应该被调用请帮助我!!
标签: android load backendless