回收站视图滚动到特定位置
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可见。
我有自定义的 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可见。