【问题标题】:Realm backed RecyclerView Showing Null Data领域支持的 RecyclerView 显示空数据
【发布时间】: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 中不显示空数据吗?

谢谢

【问题讨论】:

    标签: android realm dagger-2


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 2021-02-26
      • 1970-01-01
      相关资源
      最近更新 更多