RecyclerView, поддерживаемый Realm, показывает нулевые данные

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

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

В MainActivity я запускаю подробное действие, подобное этому

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

И в подробностях Activity я удаляю такой элемент

@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?

Спасибо


person Val Okafor    schedule 21.02.2016    source источник


Ответы (1)


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

noteAdapter = new NoteRealmAdapter(getBaseContext(), notes,true, false, null);
    realmRecyclerView.setAdapter(noteAdapter);
person Val Okafor    schedule 21.02.2016