android – 使用CursorLoader在填充列表视图之前显示进度指示器

前端之家收集整理的这篇文章主要介绍了android – 使用CursorLoader在填充列表视图之前显示进度指示器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的列表视图没有填充数据库数据时,有什么更好的方法显示进度指示器?

我找到了一些使用assynctask的方法,但在我的例子中,我使用的是Loader / CursorLoader.

  1. public class TestActivity extends SherlockFragmentActivity implements
  2. LoaderCallbacks<Cursor> {
  3.  
  4. SimpleCursorAdapter mAdapter;
  5. ListView mListView;
  6.  
  7. private static final String[] UI_BINDING_FROM = new String[] {
  8. TestDBAdapter.KEY_NAME,TestDBAdapter.KEY_ICON };
  9.  
  10. private static final int[] UI_BINDING_TO = new int[] { R.id.text,R.id.icon };
  11.  
  12. @Override
  13. public void onCreate(Bundle savedInstanceState) {
  14.  
  15. super.onCreate(savedInstanceState);
  16.  
  17. setContentView(R.layout.activity_Test);
  18.  
  19. mListView = (ListView) findViewById(R.id.listview);
  20.  
  21. mAdapter = new TestAdapter(getApplicationContext(),R.layout.list_item_Test,null,UI_BINDING_FROM,UI_BINDING_TO,0);
  22.  
  23. mListView.setAdapter(mAdapter);
  24.  
  25. getSupportLoaderManager().initLoader(0,this);
  26.  
  27. }
  28.  
  29. @Override
  30. public Loader<Cursor> onCreateLoader(int id,Bundle args) {
  31.  
  32.  
  33. Uri uri = ContentProviderTest.CONTENT_URI;
  34.  
  35. CursorLoader cursorLoader = new CursorLoader(
  36. this,uri,null);
  37.  
  38. return cursorLoader;
  39.  
  40. }
  41.  
  42. @Override
  43. public void onLoadFinished(Loader<Cursor> loader,Cursor data) {
  44. mAdapter.swapCursor(data);
  45. }
  46.  
  47. @Override
  48. public void onLoaderReset(Loader<Cursor> loader) {
  49. mAdapter.swapCursor(null);
  50. }
  51. }

一个可能的解决方案是创建一个扩展ListFragment的新类并使用setListShown()方法,但我不知道它是否是解决此问题的最佳方法.

谢谢

解决方法

将一个小的ProgressBar添加到布局文件中,其可见性设置为“已消失”.在创建CursorLoader之前,将其可见性设置为“可见”.它会出现.在onLoadFinished中,将ProgressBar可见性设置为“已消失”.它将消失,您的ListView将加载.

我会使用小型进度条.要了解有关此内容的更多信息,请参阅android.widget.ProgressBar的参考文档.

顺便说一句,可见性由View.setVisibility控制.

猜你在找的Android相关文章