RecyclerView的Adapter和ViewHolder的实现

用RecyclerView来实现左侧列表和右侧列表的列表展示。
LeftAdapter

--------------------------------------第一步---虽然会报错,但还是吧这个继承完全写完吧-----------------------------------------------------------
public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.LeftViewHolder> {
 --------------------------------------实现构造方法--------------------------------------
    private List<LeftBean.Data> list;
    private Context context;

    public LeftAdapter(List<LeftBean.Data> list, Context context) {
        this.list = list;
        this.context = context;
    }
    -----------------------第二步---创建LeftViewHolder---创建完class之后,再去最上面实现方法一共3步解决报红线-----------------------------
    class LeftViewHolder extends RecyclerView.ViewHolder {

        private TextView nameTv;
        public LeftViewHolder(@NonNull View itemView) {
            super(itemView);
           nameTv = itemView.findViewById(R.id.name);
        }
    }
     --------------------------------------------第三步-------这个是绑定子布局的方法-------------------------------------------------------------------
      @NonNull
    @Override
    public LeftViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.left_item_layout, viewGroup, false);
        LeftViewHolder leftViewHolder = new LeftViewHolder(view);
        return leftViewHolder;
    }
    @Override
    public void onBindViewHolder(@NonNull LeftViewHolder leftViewHolder, int i) {
       final LeftBean.Data data = list.get(i);
       leftViewHolder.nameTv.setText(data.name);
    }

    @Override
    public int getItemCount() {
        return list == null ? 0 : list.size();
    }

RightAdapter

--------------------------------------第一步---虽然会报错,但还是吧这个继承完全写完吧-----------------------------------------------------------
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.RightViewHolder> {
    private List<RightBean.OneData> list;
    private Context context;

    public RightAdapter(List<RightBean.OneData> list, Context context) {
        this.list = list;
        this.context = context;
    }
    --------------------第二步---创建RightViewHolder---创建完class之后,再去最上面实现方法一共3步解决报红线-----------------------------
    class RightViewHolder extends RecyclerView.ViewHolder {
        private TextView nameTv;
        private RecyclerView rv;
        public RightViewHolder(@NonNull View itemView) {
            super(itemView);
           nameTv = itemView.findViewById(R.id.name);
           rv = itemView.findViewById(R.id.rv);
        }
    }
     --------------------------------------------第三步-------这个是绑定子布局的方法-------------------------------------------------------------------
     @NonNull
    @Override
    public RightViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.right_item_layout, viewGroup, false);
        RightAdapter.RightViewHolder rightViewHolder = new RightAdapter.RightViewHolder(view);
        return rightViewHolder;
    }
    @Override
    public void onBindViewHolder(@NonNull RightViewHolder rightViewHolder, int i) {
       RightBean.OneData bean = list.get(i);
       List<RightBean.OneData.Data> list = bean.list;
       rightViewHolder.nameTv.setText(bean.name);
         -------------------这个地方需要实现多条目布局,所以rightViewHolder需要setAdapter ---RightItemAdapter----------------
       rightViewHolder.rv.setLayoutManager(new GridLayoutManager(context,3));
       rightViewHolder.rv.setAdapter(new RightItemAdapter(list,context));
    }

    @Override
    public int getItemCount() {
        return list == null ? 0 : list.size();
    }

RightItemAdapter

 -------------------------------------------第一步---虽然会报错,但还是吧这个继承完全写完吧-----------------------------------------------------------
public class RightItemAdapter extends RecyclerView.Adapter<RightItemAdapter.RightViewHolder> {
private List<RightBean.OneData.Data> list;
private Context context;

    public RightItemAdapter(List<RightBean.OneData.Data> list, Context context) {
        this.list = list;
        this.context = context;
    }
     -------------------第二步---创建RightViewHolder---创建完class之后,再去最上面实现方法一共3步解决报红线----------------
class RightViewHolder extends RecyclerView.ViewHolder {
        private TextView nameTv;
        private ImageView iv;
        public RightViewHolder(@NonNull View itemView) {
            super(itemView);
           nameTv = itemView.findViewById(R.id.name);
           iv = itemView.findViewById(R.id.iv);
        }
    }
 -------------------这个地方需要实现多条目布局,所以rightViewHolder需要setAdapter ---RightItemAdapter----------------
 @NonNull
    @Override
    public RightItemAdapter.RightViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.right_subitem_layout, viewGroup, false);
        RightItemAdapter.RightViewHolder rightViewHolder = new RightItemAdapter.RightViewHolder(view);
        return rightViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull RightViewHolder rightViewHolder, int i) {
       RightBean.OneData.Data bean = list.get(i);
       rightViewHolder.nameTv.setText(bean.name);
        -------------------有图片!用图片加载框架Glide实现----------------
        Glide.with(context).load(bean.icon).into(rightViewHolder.iv);
    }

    @Override
    public int getItemCount() {
        return list == null ? 0 : list.size();
    }

猜你喜欢

转载自blog.csdn.net/weixin_43808025/article/details/85947904