在recyclerView中更新项目的最佳方法

时间:2018-05-13 03:36:17

标签: android android-recyclerview

在我的应用程序中,我使用RecyclerView显示Feed项目,点击该项目后,我将用户带到另一个显示详细信息的活动。

在另一个活动中,用户可以执行一些更改该特定Feed的操作。当用户按下后退按钮返回RecyclerView时,项目不会显示更新的数据。

为了解决这个问题,我将RecyclerView项目的引用传递给下一个Activity,并在该引用上调用update,最终更新RecyclerView项目中的feed。

这是正确的做法还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

您可以向recylerview适配器发送消息。检查这个图书馆; Eventbus

创建数据传输模型

public class YourModel {

int id;
String updateValue;


public YourModel(int id, String value) {
    this.id = id;
    this.updateValue = value;
}

public int getId() {
    return id;
}

public void setId(int id) {
     this.id = id;
}

 public String getValue() {
    return updateValue;
}

public void setValue(String value) {
     this.updateValue = value;
}

}

主要活动;

@Override
protected void onStart() {
    super.onStart();
    EventBus.getDefault().register(this);
}

@Override
protected void onStop() {
    super.onStop();
    EventBus.getDefault().unregister(this);
}

@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEvent(YourModel model) {
    int updateIndex = model.getId();
    String newValue = model.getValue();
    arraylist.set(updateIndex, newValue);
    adapter.notifyItemChanged(updateIndex);
}

以及您的详细活动

@Override
public void onBackPressed() {
    super.onBackPressed();
    EventBus.getDefault().postSticky(new YourModel(yourItemPosition, yourNewUpdates));
}