eli*_*eli 6 android android-cursorloader android-loader
在我的列表视图没有填充数据库数据时,有什么更好的方法来显示进度指示器?
我找到了一些如何使用assynctask执行此操作的示例,但在我的情况下,我使用Loader/ CursorLoader.
public class TestActivity extends SherlockFragmentActivity implements
LoaderCallbacks<Cursor> {
SimpleCursorAdapter mAdapter;
ListView mListView;
private static final String[] UI_BINDING_FROM = new String[] {
TestDBAdapter.KEY_NAME, TestDBAdapter.KEY_ICON };
private static final int[] UI_BINDING_TO = new int[] { R.id.text, R.id.icon };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_Test);
mListView = (ListView) findViewById(R.id.listview);
mAdapter = new TestAdapter(getApplicationContext(),
R.layout.list_item_Test, null, UI_BINDING_FROM,
UI_BINDING_TO, 0);
mListView.setAdapter(mAdapter);
getSupportLoaderManager().initLoader(0, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
Uri uri = ContentProviderTest.CONTENT_URI;
CursorLoader cursorLoader = new CursorLoader(
this,
uri,
null,
null,
null,
null);
return cursorLoader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mAdapter.swapCursor(data);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
mAdapter.swapCursor(null);
}
}
Run Code Online (Sandbox Code Playgroud)
一个可能的解决方案是创建一个新类扩展ListFragment并使用该setListShown()方法,但我不知道它是否是解决此问题的最佳方法.
谢谢
Joe*_*lin 13
将一个小的ProgressBar添加到布局文件中,其可见性设置为"已消失".在创建CursorLoader之前,将其可见性设置为"可见".它会出现.在onLoadFinished中,将ProgressBar可见性设置为"已消失".它将消失,您的ListView将加载.
我会使用小型进度条.要了解有关此内容的更多信息,请参阅android.widget.ProgressBar的参考文档.
顺便说一句,可见性由View.setVisibility控制.
| 归档时间: |
|
| 查看次数: |
8514 次 |
| 最近记录: |