gpt4 book ai didi

android - 使用 CursorLoader 在填充 ListView 之前显示进度指示器

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:01 25 4
gpt4 key购买 nike

当我的 ListView 没有填充数据库数据时,有什么更好的方法来显示进度指示器?

我找到了一些如何使用 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);
}
}

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

谢谢

最佳答案

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

我会使用小型进度条。要了解更多信息,请参阅 android.widget.ProgressBar 的引用文档。

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

关于android - 使用 CursorLoader 在填充 ListView 之前显示进度指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16088499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com