我有一个RecyclerView,其中包含可根据背景事件更新的项目列表。
要更新我使用notifyItemChanged
的单个项目,列表中的每个项目都有一个精确的itemId
标记,因此我可以获得相对位置来更新它们。
代码如下:
for (int position = 0; position <= recyclerView.getChildCount(); position++) {
final View view = recyclerView.getChildAt(position);
if (view != null) {
final String viewTag = view.getTag().toString();
if (viewTag.equals(itemId)) {
LinearLayoutManager layoutManager = ((LinearLayoutManager) recyclerView.getLayoutManager());
final int firstVisiblePosition = layoutManager.findFirstVisibleItemPosition();
final int realPosition = position + firstVisiblePosition;
recyclerView.getAdapter().notifyItemChanged(realPosition );
break;
}
}
}
这仅适用于可见项目,因此如果用户滚动列表,则新的可见项目未正确更新。 如果我设置:
holder.setIsRecyclable(false);
一切正常,但我失去了RecyclerView的顺畅性。
有没有办法更新隐藏的项目?