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的可以看简介联系我,也可以私信我,我每天都看私信的