每次滚动RecycleView时如何在RecycleView中重置ScrollView的位置

时间:2018-07-06 05:59:20

标签: android android-recyclerview android-scrollview

我有一个RecycleView滚动式Horizo​​ntal,它的每个项目都有一个ScrollView滚动式Vertical。 当我向下滚动ScrollView时,它将记住该位置,并且当我将RecycleView滚动到另一个项目时不会重置到顶部,就像这样:

enter image description here

有人可以给我一个建议,让我在滚动RecycleView时将ScrollView重置为顶部吗?

2 个答案:

答案 0 :(得分:1)

您可以这样称呼:

scrollView.fullScroll(ScrollView.FOCUS_TOP)

或者这个:

 scrollView.scrollTo(0,0);

,您可以在初始化viewHolder时在适配器的onBindeViewHolder中使用它,也可以将滚动侦听器附加到RecyclerView并使用滚动侦听器检测滚动

也许是这样!

  recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
                @Override
                public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

                    LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();

                    int fVitem = linearLayoutManager.findFirstVisibleItemPosition();
                    int lVitem = linearLayoutManager.findLastVisibleItemPosition();

                    for (int i = fVitem; i <= lVitem; i++) {

                        View view = linearLayoutManager.findViewByPosition(i);

                        ScrollView scrollView;


                        if (view.getTag() != null) scrollView = (ScrollView) view.getTag();
                        else {
                            scrollView = view.findViewById(R.id.myScrollView);
                            view.setTag(scrollView);
                        }
                        scrollView.scrollTo(0, 0);
                    }

                }
            });

但是我认为如果您使用obBindViewHolder会更好地提高性能

答案 1 :(得分:0)

在您检测到RecyclerView滚动时调用此

.
.
.
[my_repo:/branches/calc]
harry = rw
bobby = r
.
.
.