2016-02-21 3 views
0

Я пытаюсь реализовать элемент delete в поддерживаемом Realm ReceyclerView. Когда пользователь выбирает элемент в RecyclerView, я беру пользователя в другое действие, где им предоставляется возможность удалить выбранный элемент. Если пользователь удалит элемент, я хочу, чтобы они вернулись к предыдущему действию.Realm backed RecyclerView, отображающий нулевые данные

Однако, когда они возвращаются к предыдущему действию, удаленный элемент все еще отображается, даже если он теперь равен нулю. Я использовал как собственный RecyclerView, так и RealmRecyclerView без успеха.

В MainActivity я начинаю подробно активность как этот

public void showNoteDetailUi(int noteId) { 
     Intent intent = new Intent(this, NoteDetailActivity.class); 
     intent.putExtra("noteId", noteId); 
     startActivity(intent); 
    } 

А на деталь деятельности, я удалить элемент, как этот

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    switch (id){ 
     case R.id.action_delete: 
      mRealm.beginTransaction(); 
      Note note = getNote(id); 
      note.removeFromRealm(); 
      mRealm.commitTransaction(); 
      onBackPressed(); 
      break; 
    } 

    return super.onOptionsItemSelected(item); 
} 

Я определил мои методы CRUD в отдельном файле, который я называю NoteManager, вот некоторые из содержимого этого NoteManager, который показывает, как я получаю список элементов из Realm.

public class NoteRealmManager implements NotesContract.Service{ 
    private Realm mRealm; 

    public NoteRealmManager(Context context){ 
     mRealm = Realm.getInstance(context); 
    } 

    @Override 
    public void delete(int id) { 
     mRealm.beginTransaction(); 
     Note note = getNote(id); 
     note.removeFromRealm(); 
     mRealm.commitTransaction(); 

    } 

    @Override 
    public RealmResults<Note> getAllNotes() { 
     mRealm.refresh(); 
     RealmResults<Note> noteModels = 
       mRealm.where(Note.class).findAll(); 
     return noteModels; 
    } 
} 

И я инъекционного этот класс для каждого вида деятельности, как это

@Module 
public class PersistenceModule { 
    @Provides @Singleton 
    public NotesContract.Service providesNoteManager(Context context){ 
     return new NoteRealmManager(context); 
    } 
} 

И

@Inject NotesContract.Service mNoteManager 

Я пытался обновить список, любая идея, как я могу сделать Realm не показывать нулевые данные в RecyclerView?

Благодаря

ответ

0

Оказывается, это легко исправить, то RealmBasedRecyclerViewAdapter имеет перегруженный конструктор, который позволяет установить automaticUpdate к истинным или ложным, я установил это верно и теперь он работает.

noteAdapter = new NoteRealmAdapter(getBaseContext(), notes,true, false, null); 
    realmRecyclerView.setAdapter(noteAdapter); 
Смежные вопросы