【发布时间】:2016-02-21 01:08:07
【问题描述】:
我正在尝试在 Realm 支持的 ReceyclerView 中实现删除项目。当用户在 RecyclerView 中选择一个项目时,我会将用户带到另一个活动,在那里他们可以选择删除所选项目。如果用户删除该项目,我希望他们返回上一个 Activity。
但是,当他们返回上一个 Activity 时,已删除的项目仍然显示,即使它现在为空。我使用了原生 RecyclerView 和 RealmRecyclerView 都没有成功。
在 MainActivity 我像这样启动详细的 Activity
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);
}
我在名为 NoteManager 的单独文件中定义了我的 CRUD 方法,这里是这个 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;
}
}
我正在向这样的每个 Activity 注入该类
@Module
public class PersistenceModule {
@Provides @Singleton
public NotesContract.Service providesNoteManager(Context context){
return new NoteRealmManager(context);
}
}
和
@Inject NotesContract.Service mNoteManager
我尝试刷新列表,知道如何让 Realm 在 RecyclerView 中不显示空数据吗?
谢谢
【问题讨论】: