我在另一个arraylist
中有一个recyclerveiws
recyclerview
,并想知道滚动滚动时如何滚动所有这些内容。
这是我到目前为止,但它给了我一个堆栈溢出错误:
holder.rv.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dx != -199382734)
for (sched_vh vh : vhs) {
if (vh != holder)
vh.rv.scrollBy(-199382734, dy);
}
}
});
答案 0 :(得分:3)
我和朋友一起解决了这个问题几个小时......最后的答案很简单。 主要的想法是两个recyclerview应该使用相同的onscrollListener而不是不同的,这样这个监听器可以获得哪个recyclelerview滚动,并避免堆栈溢出。请尝试以下
//rcv and leftrcv are two recyclerviews
RecyclerView.OnScrollListener scrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (recyclerView == leftrcv) {
rcv.removeOnScrollListener(this);
rcv.scrollBy(0, dy);
rcv.addOnScrollListener(this);
} else if (recyclerView == rcv) {
leftrcv.removeOnScrollListener(this);
leftrcv.scrollBy(0, dy);
leftrcv.addOnScrollListener(this);
}
}
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
};
leftrcv.addOnScrollListener(scrollListener);
rcv.addOnScrollListener(scrollListener);
但我不知道这是否会导致性能问题...
答案 1 :(得分:0)
您的实施可能是错误的。您应该有一个RecyclerView
具有不同的视图类型。
答案 2 :(得分:0)
从您的评论中,您似乎需要几个垂直的RecycleViews,并希望水平滚动它们。
如果您希望每个垂直列表都填满屏幕,您可以使用ViewPager,它允许您在视图(或片段)列表中水平滑动。
否则你可以看一下HorzizontalScrollView,虽然这只适用于一小组垂直列表。