Android开发教程实战案例源码分享-上左联动列表

77 阅读2分钟
Android开发教程实战案例源码分享-上左联动列表

由上左顶部标签决定列表内容需求,有些维修的app上就有这样的需求

一、思路:

左右各一个RecycleView,右上面固定两个TextView

二、效果图:

在这里插入图片描述

三、关键代码:
public class MainActivity extends AppCompatActivity {

    private ArrayList<LeftBean> leftBeans = new ArrayList<>();

    private RightOutBean rightOutBeanDianshi1 = new RightOutBean();
    private RightOutBean rightOutBeanDianshi2 = new RightOutBean();
    private RightOutBean rightOutBeanDianshi3 = new RightOutBean();

    private RightOutBean rightOutBeanBingxiang1 = new RightOutBean();
    private RightOutBean rightOutBeanBingxiang2 = new RightOutBean();
    private RightOutBean rightOutBeanBingxiang3 = new RightOutBean();

    private ArrayList<RightOutBean> rightOutBeans = new ArrayList<>();

    private TextView tv_normal_error;
    private ImageView iv_arrow_1;
    private TextView tv_normal_qita;
    private ImageView iv_arrow_2;
    private TextView tv_normal_zengzhi;
    private ImageView iv_arrow_3;
    private RecyclerView  rv_left;
    private RecyclerView rv_right;


    private LeftAdapter leftAdapter;
    private RightAdapter rightAdapter;

    private String selectTopTitle;
    private String selectLeftTitle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv_normal_error = findViewById(R.id.tv_normal_error);
        iv_arrow_1 = findViewById(R.id.iv_arrow_1);
        tv_normal_qita = findViewById(R.id.tv_normal_qita);
        iv_arrow_2 = findViewById(R.id.iv_arrow_2);
        tv_normal_zengzhi = findViewById(R.id.tv_normal_zengzhi);
        iv_arrow_3 = findViewById(R.id.iv_arrow_3);
        rv_left = findViewById(R.id.rv_left);
        rv_right = findViewById(R.id.rv_right);

        selectTopTitle = "常见故障";
        selectLeftTitle = "电视机";

        leftBeans.add(new LeftBean("电视机",true));
        leftBeans.add(new LeftBean("冰箱",false));

        rv_left.setLayoutManager(new LinearLayoutManager(this));
        leftAdapter = new LeftAdapter(leftBeans);
        rv_left.setAdapter(leftAdapter);

        ArrayList<RightBean> rightBeans11 = new ArrayList<>();
        rightBeans11.add(new RightBean("指示灯不亮","200-1400"));
        rightBeans11.add(new RightBean("黑屏/有声无图","300-2700"));
        rightBeans11.add(new RightBean("无图/无声/无光","300-1800"));
        rightBeans11.add(new RightBean("系统升级","120-800"));
        rightOutBeanDianshi1.setLeftTitle("电视机");
        rightOutBeanDianshi1.setTopTitle("常见故障");
        rightOutBeanDianshi1.setRightBean(rightBeans11);

        rv_right.setLayoutManager(new LinearLayoutManager(this));
        rightAdapter = new RightAdapter(rightOutBeanDianshi1.getRightBean());
        rv_right.setAdapter(rightAdapter);

        ArrayList<RightBean> rightBeans12 = new ArrayList<>();
        rightBeans12.add(new RightBean("上门费","30"));
        rightBeans12.add(new RightBean("漏电保护","100"));
        rightOutBeanDianshi2.setLeftTitle("电视机");
        rightOutBeanDianshi2.setTopTitle("其他收费");
        rightOutBeanDianshi2.setRightBean(rightBeans12);

        ArrayList<RightBean> rightBeans13 = new ArrayList<>();
        rightBeans13.add(new RightBean("机顶盒","150-300"));
        rightBeans13.add(new RightBean("HDMI高清线1.5米","100"));
        rightOutBeanDianshi3.setLeftTitle("电视机");
        rightOutBeanDianshi3.setTopTitle("增值产品");
        rightOutBeanDianshi3.setRightBean(rightBeans13);


        ArrayList<RightBean> rightBeans21 = new ArrayList<>();
        rightBeans21.add(new RightBean("灯不亮","100-300"));
        rightBeans21.add(new RightBean("噪音大","100-400"));
        rightBeans21.add(new RightBean("漏水","300-360"));
        rightOutBeanBingxiang1.setLeftTitle("冰箱");
        rightOutBeanBingxiang1.setTopTitle("常见故障");
        rightOutBeanBingxiang1.setRightBean(rightBeans21);

        ArrayList<RightBean> rightBeans22 = new ArrayList<>();
        rightBeans22.add(new RightBean("上门费","50"));
        rightBeans22.add(new RightBean("漏电保护","100"));
        rightOutBeanBingxiang2.setLeftTitle("冰箱");
        rightOutBeanBingxiang2.setTopTitle("其他收费");
        rightOutBeanBingxiang2.setRightBean(rightBeans22);

        ArrayList<RightBean> rightBeans23 = new ArrayList<>();
        rightBeans23.add(new RightBean("油污清洁剂","45"));
        rightBeans23.add(new RightBean("座架","100"));
        rightOutBeanBingxiang3.setLeftTitle("冰箱");
        rightOutBeanBingxiang3.setTopTitle("增值产品");
        rightOutBeanBingxiang3.setRightBean(rightBeans23);

        rightOutBeans.add(rightOutBeanDianshi1);
        rightOutBeans.add(rightOutBeanDianshi2);
        rightOutBeans.add(rightOutBeanDianshi3);

        rightOutBeans.add(rightOutBeanBingxiang1);
        rightOutBeans.add(rightOutBeanBingxiang2);
        rightOutBeans.add(rightOutBeanBingxiang3);


        leftAdapter.setOnItemClickListener(new LeftAdapter.OnItemClickListener() {
            @Override
            public void onItemClicked(String leftTitle) {
                setRightContent(selectTopTitle,leftTitle);
            }
        });

        tv_normal_error.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                selectTopTitle = "常见故障";
                selectLeftTitle = leftAdapter.getCurrentTitle();
                setRightContent(selectTopTitle,selectLeftTitle);
            }
        });

        tv_normal_qita.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                selectTopTitle = "其他收费";
                selectLeftTitle = leftAdapter.getCurrentTitle();
                setRightContent(selectTopTitle,selectLeftTitle);
            }
        });

        tv_normal_zengzhi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                selectTopTitle = "增值产品";
                selectLeftTitle = leftAdapter.getCurrentTitle();
                setRightContent(selectTopTitle,selectLeftTitle);
            }
        });


    }



    private void setRightContent(String selectTopTitle,String selectLeftTitle){
        iv_arrow_1.setVisibility(View.GONE);
        iv_arrow_2.setVisibility(View.GONE);
        iv_arrow_3.setVisibility(View.GONE);
        if (rightAdapter != null){
            for (RightOutBean rightOutBean : rightOutBeans){
                if (rightOutBean.getLeftTitle().equals(selectLeftTitle) && rightOutBean.getTopTitle().equals(selectTopTitle)){
                    rightAdapter.setDatas(rightOutBean.getRightBean());
                    break;
                }
            }

            if (selectTopTitle.equals("常见故障")){
                iv_arrow_1.setVisibility(View.VISIBLE);
            }
            if (selectTopTitle.equals("其他收费")){
                iv_arrow_2.setVisibility(View.VISIBLE);
            }

            if (selectTopTitle.equals("增值产品")){
                iv_arrow_3.setVisibility(View.VISIBLE);
            }
        }
    }


}
四、项目demo源码结构图:

在这里插入图片描述
有问题或者需要完整源码demo的可以看简介联系我,也可以私信我,我每天都看私信的