当前位置: 移动技术网 > IT编程>移动开发>Android > Android若干条并排RecyclerView滑动实时联动

Android若干条并排RecyclerView滑动实时联动

2018年11月04日  | 移动技术网IT编程  | 我要评论

杜学芳,韩国性文化,与美男群居的日子

android若干条并排recyclerview滑动实时联动 以水平方向并排排列的两条recyclerview为例,实现一个简单的功能:这两个recyclerview要实时联合滚动,即其中任意一个recyclerview,将触发其余所有recyclerview同时滚动相同。
写布局:




    

    

    

代码:
package zhangphil.recyclerview;

import android.graphics.color;
import android.os.bundle;
import android.support.annotation.nonnull;
import android.support.annotation.nullable;
import android.support.v7.app.appcompatactivity;
import android.support.v7.widget.linearlayoutmanager;
import android.support.v7.widget.recyclerview;
import android.view.layoutinflater;
import android.view.view;
import android.view.viewgroup;
import android.widget.textview;

import java.util.arraylist;

public class recyclerviewactivity extends appcompatactivity {
    private recyclerview mrecyclerview1;
    private recyclerview mrecyclerview2;

    private arraylist mitems;

    @override
    protected void oncreate(@nullable bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.recycler_view_activity);

        mitems = new arraylist<>();
        for (int i = 0; i < 100; i++) {
            mitems.add(i);
        }

        initrecyclerview1();
        initrecyclerview2();

        mrecyclerview1.addonscrolllistener(new recyclerview.onscrolllistener() {
            @override
            public void onscrolled(recyclerview recyclerview, int dx, int dy) {
                if (recyclerview.getscrollstate() != recyclerview.scroll_state_idle) {
                    mrecyclerview2.scrollby(dx, dy);
                }
            }
        });

        mrecyclerview2.addonscrolllistener(new recyclerview.onscrolllistener() {
            @override
            public void onscrolled(recyclerview recyclerview, int dx, int dy) {
                if (recyclerview.getscrollstate() != recyclerview.scroll_state_idle) {
                    mrecyclerview1.scrollby(dx, dy);
                }
            }
        });
    }

    private void initrecyclerview1() {
        mrecyclerview1 = findviewbyid(r.id.recycler_view_1);
        linearlayoutmanager layoutmanager = new linearlayoutmanager(this);
        layoutmanager.setorientation(linearlayoutmanager.vertical);
        mrecyclerview1.setlayoutmanager(layoutmanager);

        recyclerviewadapter madapter = new recyclerviewadapter(1);
        mrecyclerview1.setadapter(madapter);
    }

    private void initrecyclerview2() {
        mrecyclerview2 = findviewbyid(r.id.recycler_view_2);
        linearlayoutmanager layoutmanager = new linearlayoutmanager(this);
        layoutmanager.setorientation(linearlayoutmanager.vertical);
        mrecyclerview2.setlayoutmanager(layoutmanager);

        recyclerviewadapter madapter = new recyclerviewadapter(2);
        mrecyclerview2.setadapter(madapter);
    }

    private class recyclerviewadapter extends recyclerview.adapter {
        private int id;

        public recyclerviewadapter(int id) {
            this.id = id;
        }

        @nonnull
        @override
        public myvh oncreateviewholder(@nonnull viewgroup parent, int viewtype) {
            view view = layoutinflater.from(getapplicationcontext()).inflate(android.r.layout.simple_list_item_2, parent, false);
            return new myvh(view);
        }

        @override
        public void onbindviewholder(@nonnull myvh holder, int position) {
            holder.text1.settext("recyclerview:" + id);
            holder.text2.settext(mitems.get(position) + "");

            switch (id) {
                case 1:
                    holder.text1.setbackgroundcolor(color.red);
                    break;

                case 2:
                    holder.text1.setbackgroundcolor(color.blue);
                    break;
            }
        }

        @override
        public int getitemcount() {
            return mitems.size();
        }
    }

    private class myvh extends recyclerview.viewholder {
        public textview text1;
        public textview text2;

        public myvh(view itemview) {
            super(itemview);
            text1 = itemview.findviewbyid(android.r.id.text1);
            text1.settextcolor(color.white);
            text2 = itemview.findviewbyid(android.r.id.text2);
            text2.settextcolor(color.dkgray);
        }
    }
}

同时滑动其中一条,然后第二条也实时联合滚动

\

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网