我有一个自定义的RecyclerView,并且使用ViewHolder。我有一个SearchView。我想根据搜索文本移动RecyclerView的位置。我该如何完成这个任务?这样,搜索文本过滤器就会执行,根据过滤结果,我将得到过滤文本的位置,然后使用该位置将我的焦点(滚动)移动到那个位置。
谢谢。
谢谢。
试试这个:
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可见。
myRecyclerview.smoothScrollToPosition(position);
。