1:轻松更新动态项目。
List<T>
,我在RecyclerView.Adapter
中使用该列表。用户滑动以刷新,并从包含一些新项目和一些更新旧项目的API返回一个新列表。现在旧的列表需要删除重复的项目。 updated
属性,如果用户与之互动,则该属性可能会发生变化。2:即时用户反馈(这可能与目标#1相关)。
RecyclerView.Adapter
中插入新项目,首先需要在API中创建。实现同时在RecyclerView.Adapter
和API中创建对象。当从API返回新对象时,先前立即注入到RecyclerView.Adapter
&#34;同步&#34;使用API响应。这样用户就能看到即时反馈。 对于目标#1,我真的没有任何想法,但对于目标2我可能在我的ViewHolder
内部想到这样的事情? (我听说Viewholders中的更新/同步模型通常不是一个好的做法,因为查看者可以回收):
// JAVA 7
private void createNewObjectToBeInsertedIntoRecyclerView(String data) {
// Pass callback to API and at the same time insert object into adapter
mAdapter.addNewObject(data);
mPresenter.createObject(new SyncRequestCallback() {
@Override
public void onSuccessFromAPI(ModelObject model) {
mAdapter.updateObject(model);
}
});
}
// JAVA 8
private void createNewObjectToBeInsertedIntoRecyclerView(String data) {
// Pass callback to API and at the same time insert object into adapter
mAdapter.addNewObject(data);
mPresenter.createObject((sync) -> { mAdapter.updateObject(model); });
}
这只是我的头脑,它绝对容易出错。
答案 0 :(得分:-1)
您不应该在ViewHolder
中执行此类操作,只需将从API获取的数据绑定到UI。
你应该做的是对Adapter
List<T>
从API返回时,只需将适配器中的旧列表指向此新列表(oldList = newList
)并调用mAdapter.notifyDataSetChanged()
Adapter
。如果您知道Adapter
中您插入该项目的位置(我假设您知道),请致电mAdapter.notifyItemInserted(position)
,或者如果您已经创建了Adapter
,请致电{{ 1}}