Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在RecyclerView中滚动到视图中的EditText并将其聚焦?_Android_Android Recyclerview - Fatal编程技术网

Android 如何在RecyclerView中滚动到视图中的EditText并将其聚焦?

Android 如何在RecyclerView中滚动到视图中的EditText并将其聚焦?,android,android-recyclerview,Android,Android Recyclerview,my RecyclerView中的每个项目都包含多个视图,包括一个EditText。为了响应用户操作,我想滚动到RecyclerView中的特定位置,并聚焦相应的EditText。 我可以滚动到以下位置: recyclerView.smoothScrollToPosition(position); 把那个职位的收视者 RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(positi

my RecyclerView中的每个项目都包含多个视图,包括一个EditText。为了响应用户操作,我想滚动到RecyclerView中的特定位置,并聚焦相应的EditText。 我可以滚动到以下位置:

recyclerView.smoothScrollToPosition(position);
把那个职位的收视者

RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(position);
然后在viewHolder视图中找到EditText,然后执行其余操作


问题是,当目标位置不可见时,
findViewHolderForAdapterPosition
返回null。

我想我找到了一个解决方法:
当视图可见时,可以使用
findViewHolderForAdapterPosition
访问该视图。否则,您必须滚动到其位置。但在执行此操作之前,您必须添加一个
OnScrollListener
。布局更新完成并滚动完成后,可以使用
findViewHolderForAdapterPosition
访问视图。
OnScrollListener
可能是这样的:

@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
    super.onScrollStateChanged(recyclerView, newState);

    if (newState == SCROLL_STATE_IDLE) {
        RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(position);
        /*
            find the view and focus on it here.
        */
        recyclerView.removeOnScrollListener(this);
    }
}