伙计们,我正在开发android TV应用程序,所以我水平和垂直地使用了recyclerview,并且我使用了一种方法通过使用adapter.notifyDataSetChanged()来刷新垂直recyclerview的适配器,但我遇到了一个问题。
1.它的焦点消失了,按任意方向键都不起作用,只有右键起作用
2.我使用了adapter.notifyItemRangeChanged(0,categoryDataList.size()),但我仍然有一个问题,它的焦点是布局的第一个元素,否则是布局的最后一个元素。
所以请尽快帮助我。
提前致谢。
当然,项目会失去焦点。因为通过调用方法刷新 RecyclerView 时没有视图获得焦点通知*已更改.
当您调用时,有一种不完美的方法可以在 RecyclerView 中保持焦点notifyDatasetChanged()
.
- 重写方法 getItemId(),为每个项目提供一个稳定的 id:
@Override public long getItemId(int position) { return position; }
- 集合有StableId:
adapter.setHasStableIds(true);
- 现在基本上你可以在调用notifyDatasetChanged时将注意力集中在具体的项目上,如果没有,则禁用动画师:
mRecyclerView.setItemAnimator(null);
关于稳定ID:Android:如何制作具有稳定ID的适配器? https://stackoverflow.com/questions/10267731/android-how-to-make-an-adapter-with-stable-ids
关于禁用动画师:如何实现RecyclerView的ItemAnimator禁用notifyItemChanged的动画 https://stackoverflow.com/questions/29873859/how-to-implement-itemanimator-of-recyclerview-to-disable-the-animation-of-notify
关于google代码中step3的原因:
https://code.google.com/p/android/issues/detail?id=204277 https://code.google.com/p/android/issues/detail?id=204277
祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)