Quale modo migliore di mostrare un indicatore di avanzamento mentre il mio listview non è pieno di dati del database?Mostra indicatore di avanzamento prima di riempire listview utilizzando CursorLoader
Ho trovato alcuni esempi su come eseguire questa operazione, utilizzando assynctask, ma nel mio caso, sto usando 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);
}
}
Una possibile soluzione, potrebbe essere quella di creare una nuova classe che estende ListFragment
e utilizzare il metodo setListShown()
, ma non so se è il modo migliore per risolvere questo problema.
Grazie
La tua risposta mi ha aiutato a ottenere [questo esempio] (http://stackoverflow.com/questions/12559461/how-to-show-progress-barcircle-in-an-activity-having-a-listview-before-loading/12559601 # 12559601). Credo che questo sia il modo più semplice. Grazie – elirigobeli