我想转换我的Android应用程序以使用LoaderManager和CursorLoader。基本上,我有一个包含ADDRESS列和DISTANCE列的SQLite数据库,我想将列值加载到我的ListView行中。现在Android LoaderManager和CursorLoader混淆
,我已经做了很多的研究,一切都指向这个教程:http://mobile.tutsplus.com/tutorials/android/android-sdk_content-providers/
这是一个很好的教程,但也有几件事情,我还是不明白。主要是,我该如何构建传入'new CursorLoader()'的内容URI?我没有使用任何外部数据,如设备通讯录等。
请参阅下面的代码。我很困惑,如何生成BASE_URI值:
public class FavoritesFragment extends ListFragment implements
LoaderManager.LoaderCallbacks<Cursor> {
SimpleCursorAdapter mAdapter;
static final String[] FAVORITES_SUMMARY_PROJECTION = new String[] {
MyApplication.COLUMN_ID, MyApplication.COLUMN_ADDRESS,
MyApplication.COLUMN_DISTANCE, };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAdapter = new SimpleCursorAdapter(getActivity(),
R.layout.locations_list_row, null, new String[] {
MyApplication.COLUMN_ADDRESS,
MyApplication.COLUMN_DISTANCE }, new int[] {
R.id.address2, R.id.distance }, 0);
setListAdapter(mAdapter);
getLoaderManager().initLoader(0, null, this);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// Insert desired behavior here.
}
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new CursorLoader(getActivity(), ***BASE_URI***,
FAVORITES_SUMMARY_PROJECTION, null, null, null);
}
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
mAdapter.swapCursor(data);
}
public void onLoaderReset(Loader<Cursor> loader) {
mAdapter.swapCursor(null);
}
}
[**了解'LoaderManager'(第2部分)**](http://www.androiddesignpatterns.com/2012/07/understanding-loadermanager.html)是一个很好的学习文章。 – 2012-09-01 19:54:28