我正在尝试在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中显示空数据吗?
由于
答案 0 :(得分:0)
原来这是一个简单的修复,RealmBasedRecyclerViewAdapter有一个重载的构造函数,允许你将automaticUpdate设置为true或false,我将其设置为true,现在它可以工作。
noteAdapter = new NoteRealmAdapter(getBaseContext(), notes,true, false, null);
realmRecyclerView.setAdapter(noteAdapter);