【问题标题】:Is there any to let RecycleView's first visible item get focus有没有什么可以让 RecycleView 的第一个可见项目获得焦点
【发布时间】:2020-06-04 07:29:41
【问题描述】:

我的项目中有一些代码 sn-p 使用了RecycleView

有没有办法让第一个可见项而不是最后一个可见项获得焦点?

// The picture marked with RED
parentRecycleView.setAdapter(ParentAdapter)
// The picture marked with GREEN
parentRecycleViewViewHolder.populate(xxxx){
   childRecycleView.setAdapter(ChildAdapter)
}

然后我滚动到第一项。

parentRecycle.scrollToPosition(0)

正如您在下面的截图中看到的那样:最后一个可见的焦点(EditText)自动获得。

我的问题是: 有没有让第一个可见项目获得焦点(EditText)?

The image capture

【问题讨论】:

    标签: android android-recyclerview nestedrecyclerview


    【解决方案1】:

    获取第一个可见项目 第一个可见的孩子取决于 LayoutManager。如果您使用的是 LinearLayoutManager 或 GridLayoutManager,则可以使用

    int findFirstVisibleItemPosition(); int findFirstCompletelyVisibleItemPosition(); 例如:

    GridLayoutManager layoutManager = ((GridLayoutManager)mRecyclerView.getLayoutManager()); int firstVisiblePosition = layoutManager.findFirstVisibleItemPosition(); 对于 LinearLayoutManager,第一个/最后一个取决于适配器的顺序。不要从 RecyclerView 查询孩子; LayoutManager 可能更喜欢布局比可见的缓存更多的项目。

    现在,一旦您有了可见项目,您就可以使用 requestfocus() 函数发送焦点。

    就是这样。

    希望对你有帮助。

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 2021-06-13
      • 2019-08-15
      相关资源
      最近更新 更多