在我的应用程序中,我使用RecyclerView显示Feed项目,点击该项目后,我将用户带到另一个显示详细信息的活动。
在另一个活动中,用户可以执行一些更改该特定Feed的操作。当用户按下后退按钮返回RecyclerView时,项目不会显示更新的数据。
为了解决这个问题,我将RecyclerView项目的引用传递给下一个Activity,并在该引用上调用update,最终更新RecyclerView项目中的feed。
这是正确的做法还是有更好的方法?
答案 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));
}