我的应用包含以下组件:
ListFragment
显示来自内容提供商的数据的CursorAdapter
这是挑战。首次显示ListFragment
时,数据库为空。我正在使用LoaderManager
/ CursorLoader
从提供商处获取数据,而ListFragment
会显示进度指示器。问题是,这将始终导致空表,因为服务还没有时间轮询远程URI。
用户观察到类似的内容:
ListFragment
显示进度指示器这不直观。我想在加载数据时显示进度指示器。
以下是我现在所掌握的概述。
public class ArticleListFragment extends ListFragment
implements LoaderManager.LoaderCallbacks<Cursor> {
//...
@Override
public void onActivityCreated(Bundle savedInstanceState) {
//...
mAdapter = new SimpleCursorAdapter(...);
setListAdapter(mAdapter);
setListShown(false);
getLoaderManager().initLoader(0, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new CursorLoader(...);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mAdapter.swapCursor(data);
setListShown(true);
}
//...
}
答案 0 :(得分:0)
使用ContentObserver技术并在数据更改时加载游标。因此,您可以在需要时隐藏进度,例如当Cursor.getCount()&gt; 0