0

我的项目中有一些代码片段使用了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)?

图像捕获

4

1 回答 1

0

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

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

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

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

就是这样。

希望能帮助到你。

谢谢!

于 2020-06-04T07:37:53.723 回答