回收站视图滚动到特定位置

Recycler view scroll to specific position

我有自定义的 recyclerview 和 view Holder。我有一个搜索视图。我想根据搜索视图搜索的文本移动回收器视图位置。我怎样才能完成这个任务?这样搜索文本过滤器就会执行,并且根据过滤我会得到过滤文本的位置。并使用它我可以将我的焦点(滚动)移动到那个位置。

谢谢

试试这个:

myRecyclerview.scrollToPosition(position);

如果在某些情况下不起作用(键盘打开等),请尝试使用延迟。

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
         myRecyclerview.scrollToPosition(position);
    }
 }, 200);

这也可以,但速度很慢而且效率不高。 Recycelerview 不会每次都以相同的速度加载,这就是为什么这个会有点滞后。

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
         myRecyclerview.scrollToPosition(position);
    }
 }, 200);

但经过长时间的努力,我找到了一个改进的版本,效果非常好。

private void scrolltopos() {
        int index = 0;
        if (layoutManager.findFirstCompletelyVisibleItemPosition() != index) {
            recyclerview.getLayoutManager().scrollToPosition(index);
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    scrolltopos();
                }
            }, 1000);
        } else {
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    recyclerview.setVisibility(View.VISIBLE);
                }
            }, 1000);
        }
    }

这段代码就像一个循环。它会保持 运行 直到它到达你想要的位置。最重要的是它会在操作后自动使recyclerview可见。