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

在我的列表视图没有填充数据库数据时,有什么更好的方法显示进度指示器?

我找到了一些使用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,this);

}

@Override
public Loader<Cursor> onCreateLoader(int id,Bundle args) {


    Uri uri = ContentProviderTest.CONTENT_URI;

    CursorLoader cursorLoader = new CursorLoader(
            this,uri,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);
}
}

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

谢谢

解决方法

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

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

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

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...