android中实现双列表联动功能

就是一个数据展示的功能,左边是目录、右边是详情列表。效果图如下:

实现的思路,就是左右一个列表,右边的列表里面嵌套一个列表,一共三个列表。

第一步:先写一个主页面布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Activity.PageEffect.recycleview.doubleList.DoubleListActivity">
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv_left"
        android:layout_width="100dp"
        android:layout_height="wrap_content"/>
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv_right"
        android:layout_toRightOf="@+id/rv_left"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</RelativeLayout>

第二步:写一个左边适配器

public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.LeftHolder>{
    Context context;
    List<LeftBean> list;
    OnItemClickListener onItemClickListener;
    public LeftAdapter(Context context, List<LeftBean> list){
        this.context=context;
        this.list=list;
    }
    @NonNull
    @Override
    public LeftHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(context).inflate(R.layout.item_recycleview_left,parent,false);
        return new LeftHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull LeftHolder holder, @SuppressLint("RecyclerView") int position) {
        holder.typeTv.setText(list.get(position).getType());
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onItemClickListener!=null){
                    onItemClickListener.onItemClick(v,position);
                }
            }
        });
        if (list.get(position).isSelected()){
            holder.leftRl.setBackgroundColor(Color.parseColor("#0000ff"));
            holder.typeTv.setTextColor(Color.parseColor("#00ff00"));
        }else {
            holder.leftRl.setBackgroundColor(Color.parseColor("#00ff00"));
            holder.typeTv.setTextColor(Color.parseColor("#666666"));
        }
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public static class LeftHolder extends RecyclerView.ViewHolder {
        RelativeLayout leftRl;
        TextView typeTv;
        public LeftHolder(@NonNull View itemView) {
            super(itemView);
            leftRl=itemView.findViewById(R.id.rl_left);
            typeTv=itemView.findViewById(R.id.tv_type);
        }
    }

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

    public interface OnItemClickListener{
        void onItemClick(View v,int position);
    }

   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值