0

我已经实现了自己的加载器并尝试在片段中使用它。

我知道 ContentProvider 代码正在运行,因为我已经使用 LOG 消息对其进行了跟踪。错误必须在我的片段代码中。

比我更有经验的人可以找出故意的错误。

 public class StorePickerFragment extends ListFragment implements
 LoaderManager.LoaderCallbacks<Cursor> {


 private SimpleCursorAdapter adapter;

 /** Called when the Fragment is first created. */
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState) {
fillData();
 // Inflate the layout for this fragment


 return inflater.inflate(R.layout.store_list, container, false);
 }


 private void fillData() {

 // Fields from the database (projection)
 // Must include the _id column for the adapter to work
 String[] from = new String[] {StoreTable.COLUMN_ID, StoreTable.COLUMN_NAME };
 // Fields on the UI to which we map
 int[] to = new int[] { R.id.label };


 getLoaderManager().initLoader(0, null, this);
 adapter = new SimpleCursorAdapter(getActivity(), R.layout.store_row, null, from,
 to, 0);

        setListAdapter(adapter);
 }


 // Creates a new loader after the initLoader () call
 @Override
 public Loader<Cursor> onCreateLoader(int id, Bundle args) {
 String[] projection = { StoreTable.COLUMN_ID, StoreTable.COLUMN_NAME };
 CursorLoader cursorLoader = new CursorLoader(getActivity(),
    MyContentProvider.STORE_URI, projection,null,null, StoreTable.COLUMN_NAME);
 return cursorLoader;
 }

 @Override
 public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
 adapter.swapCursor(data);
 }

 @Override
 public void onLoaderReset(Loader<Cursor> loader) {
 // data is not available anymore, delete reference
 adapter.swapCursor(null);
 }

 }    
4

0 回答 0