就是一个数据展示的功能,左边是目录、右边是详情列表。效果图如下:
实现的思路,就是左右一个列表,右边的列表里面嵌套一个列表,一共三个列表。
第一步:先写一个主页面布局文件
<?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);
}