リストビューがデータベースのデータで満たされていないときに進捗インジケータを表示するにはどうすればよいでしょうか?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, 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()
方法を使用することですが、それはこの問題を解決するための最良の方法である場合、私は知りません。
おかげ
あなたの回答は私に[この例を]手伝ってくれました(http://stackoverflow.com/questions/12559461/how-to-show-progress-barcircle-in-an-activity-having-a-listview-before-loading/12559601#12559601)。私はこれが最も簡単な方法だと信じています。ありがとうございます – elirigobeli