领域支持RecyclerView显示空数据

时间:2016-02-21 01:08:08

标签: android realm dagger-2

我正在尝试在Realm支持的ReceyclerView中实现删除项。当用户在RecyclerView中选择一个项目时,我将用户带到另一个活动,在该活动中,他们可以选择删除所选项目。如果用户删除了该项目,我希望他们返回上一个活动。

然而,当他们返回上一个Activity时,删除的项目仍然显示,即使它现在为null。我使用了原生的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中显示空数据吗?

由于

1 个答案:

答案 0 :(得分:0)

原来这是一个简单的修复,RealmBasedRecyclerViewAdapter有一个重载的构造函数,允许你将automaticUpdate设置为true或false,我将其设置为true,现在它可以工作。

noteAdapter = new NoteRealmAdapter(getBaseContext(), notes,true, false, null);
    realmRecyclerView.setAdapter(noteAdapter);