2015-08-17 6 views
0

Я разрабатываю приложение для Android, которое загружает reddits и помещает его в db, я использую асинхронный загрузчик курсора в своем фрагменте SubredditsFragment.class. Этот фрагмент содержит адаптер, который имеет загрузчик курсора. Когда я останавливаю или перезагружаю загрузчик, загрузчик должен быть заменен на моем адаптере.метод не может быть разрешен: adapter.swapCursor (загрузчик);

public class SubRedditsFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> { 


     private List<SubRedditData> subRedditDataList; 

     private IntentFilter filter; 

     public static final String TAG = SubRedditsFragment.class.getName(); 

     private SubredditAdapter adapter; 
     @Override 
     public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
      String[] projection = null; 
      String where = null; 
      String[] whereArgs = null; 
      String sortOrder = null; 

      Uri queryUri = RedditContentProvider.CONTENT_URI; 

      return new CursorLoader(getActivity(), queryUri, projection, where, whereArgs, sortOrder); 
     } 

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     Log.i(TAG,"Added broadcastreceiver"); 
     getActivity().registerReceiver(receiver,filter); 
     adapter = new SubredditAdapter(getActivity().getApplicationContext(),subRedditDataList);  

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

      getLoaderManager().destroyLoader(loader.getId()); 
     } 

     @Override 
     public void onLoaderReset(Loader<Cursor> loader) { 
      adapter.swapCursor(null); 
     } 

The problem is that I can't use the method adapter.swapCursor(), it's unknown for Android. I get the error message Cannot resolve method 'swapCursor(loader)' 
+0

вы определяете 'adapter' в глобальном масштабе? –

+0

Да Я отредактировал мой вопрос – Jonas

+0

Пожалуйста, добавьте SubredditAdapter code too –

ответ

0

добавить этот код в вашем адаптере, mCursor является глобальным переменным курсором

public void swapCursor(Cursor newCursor) { 
     // Always close the previous mCursor first 
     if (mCursor != null) mCursor.close(); 
     mCursor = newCursor; 
     if (newCursor != null) { 
      // Force the RecyclerView to refresh 
      this.notifyDataSetChanged(); 
     } 
    } 
+0

Важно то, что используется recyclerview, который делает очень мало сам по себе. Вы должны добавить к адаптеру. – Theo

Смежные вопросы