【问题标题】:How to scroll to and focus an EditText inside a view in RecyclerView?如何滚动到 RecyclerView 中的视图内的 EditText 并将其聚焦?
【发布时间】:2020-05-06 07:43:28
【问题描述】:

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

recyclerView.smoothScrollToPosition(position);

并获取该位置的 ViewHolder

RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(position);

然后在viewHolder的视图中找到那个EditText,然后做剩下的事情。

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

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    我想我找到了解决方法:
    当视图可见时,可以使用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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-14
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多