gpt4 book ai didi

android - 在 recyclerview 中刷新焦点丢失

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:04:20 29 4
gpt4 key购买 nike

伙计们,我正在开发 android TV 应用程序,所以我水平和垂直使用了 recyclerview,我使用了一种方法来刷新垂直 recyclerview 的适配器,方法是使用 adapter.notifyDataSetChanged() 但我遇到了一个问题。1. 它的焦点消失了,按下任何方向键都不起作用,只有右键起作用2. 我使用了 adapter.notifyItemRangeChanged(0, categoryDataList.size()) 但我仍然有一个问题,它的焦点是布局的第一个元素,否则是布局的最后一个。所以请尽快帮助我。提前致谢。

最佳答案

当然 item 会失去焦点。因为当您通过调用方法 notify*Changed 刷新 RecyclerView 时,没有 View 获得焦点。

当您调用 notifyDatasetChanged() 时,有一种不完善的方法可以将焦点保持在 RecyclerView 中。

  1. 覆盖方法getItemId(),给每一个项目一个稳定的id:
    @Override public long getItemId(int position) { 返回位置; }
  2. 设置有 StableId:
    adapter.setHasStableIds(true);
  3. 现在基本上你可以在调用 notifyDatasetChange 时保持焦点在一个具体的项目上,如果不是,禁用动画器:
    mRecyclerView.setItemAnimator(null);

about stable id:Android: How to make an adapter with stable ids?
about disable animator:How to implement ItemAnimator of RecyclerView to disable the animation of notifyItemChanged
about the reason of step3 in google code:
https://code.google.com/p/android/issues/detail?id=204277

祝你好运!

关于android - 在 recyclerview 中刷新焦点丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40299494/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com