zoukankan      html  css  js  c++  java
  • recyclerview加载多种布局

    首先recyclerview适配器继承自RecyclerView.Adapter 不是之前的那个
    public class MyDetailsAdapter extends RecyclerView.Adapter {
    //设置常量
    //平台
    private static final int LEFT = 1;
    //用户
    private static final int RIGHT = 0;
    //头部
    private static final int TITLE = 3;

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
    RecyclerView.ViewHolder holder = getViewHolderByViewType(viewType);
    return holder;
    }
    /**
    * 根据不同的position,设置不同的ViewType
    * position表示当前是第几个Item,通过position拿到当前的Item对象,然后判断这个item对象需要那种视图
    */
    @Override
    public int getItemViewType(int position) {
    if (myFeedbackDetailsModels.get(position).getSource().equals("1")) {
    return LEFT;
    } else if (myFeedbackDetailsModels.get(position).getSource().equals("0")) {
    return RIGHT;
    } else if (myFeedbackDetailsModels.get(position).getSource().equals("null")) {
    return RIGHT;
    } else if (myFeedbackDetailsModels.get(position).getSource().equals("3")) {
    return TITLE;
    }
    return 0;
    }

    private RecyclerView.ViewHolder getViewHolderByViewType(int viewType) {
    View left = View.inflate(mContext, R.layout.left_item, null);
    View right = View.inflate(mContext, R.layout.right_item, null);
    View title = View.inflate(mContext, R.layout.title_item, null);
    RecyclerView.ViewHolder holder = null;
    switch (viewType) {
    case LEFT:
    holder = new ViewHolderLeft(left);
    break;
    case RIGHT:
    holder = new ViewHolderRight(right);
    break;
    case TITLE:
    holder = new ViewHolderTitle(title);
    break;
    }
    return holder;
    }

    //用于绑定数据

    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    //调用哪个布局就给那个布局绑定数据

    if (holder instanceof ViewHolderLeft){
    } else if (holder instanceof ViewHolderTitle) {
    }else if (holder instanceof ViewHolderRight) {
    }
    }


    //给每个布局加一个viewholder
    private class ViewHolderLeft extends RecyclerView.ViewHolder {
    TextView tv_date, tv_text, tv_no, tv_yes;
    ImageView iv_head, iv_photo;
    LinearLayout ll_solve;

    public ViewHolderLeft(View itemView) {
    super(itemView);
    tv_date = itemView.findViewById(R.id.tv_date);
    tv_text = itemView.findViewById(R.id.tv_text);
    iv_head = itemView.findViewById(R.id.iv_head);
    iv_photo = itemView.findViewById(R.id.iv_photo);
    ll_solve = itemView.findViewById(R.id.ll_solve);

    tv_no = itemView.findViewById(R.id.tv_no);
    tv_yes = itemView.findViewById(R.id.tv_yes);

    }
    }

    private class ViewHolderRight extends RecyclerView.ViewHolder {
    TextView tv_date, tv_text;
    ImageView iv_head;
    ImageView iv_photo;

    public ViewHolderRight(View itemView) {
    super(itemView);
    tv_date = itemView.findViewById(R.id.tv_date);
    tv_text = itemView.findViewById(R.id.tv_text);
    iv_head = itemView.findViewById(R.id.iv_head);
    iv_photo = itemView.findViewById(R.id.iv_photo);
    iv_head = itemView.findViewById(R.id.iv_head);
    }
    }

    private class ViewHolderTitle extends RecyclerView.ViewHolder {
    TextView tv_date, tv_text;
    ImageView iv_head;
    ImageView iv_img1, iv_img2, iv_img3, iv_more;
    LinearLayout ll_img;

    public ViewHolderTitle(View itemView) {
    super(itemView);
    tv_date = itemView.findViewById(R.id.tv_date);
    tv_text = itemView.findViewById(R.id.tv_text);
    iv_head = itemView.findViewById(R.id.iv_head);
    //图片一
    iv_img1 = itemView.findViewById(R.id.iv_img1);
    //图片二
    iv_img2 = itemView.findViewById(R.id.iv_img2);
    //图片三
    iv_img3 = itemView.findViewById(R.id.iv_img3);
    //显示更多
    iv_more = itemView.findViewById(R.id.iv_more);
    //图片布局
    ll_img = itemView.findViewById(R.id.ll_img);
    }
    }

  • 相关阅读:
    设计模式:Prototype 原型模式
    [C++STDlib基础]关于单字符的操作——C++标准库头文件<cctype>
    Android开发之简单的电子相册实现
    autotools入门笔记(二)——创建和使用静态库、动态库
    Dreamer 框架 比Struts2 更加灵活
    Redis集群明细文档
    【Servlet3.0新特性】第03节_文件上传
    POJ 3264 Balanced Lineup
    利用jquery对ajax操作,详解原理(附代码)
    C语言实现修改文本文件中的特定行
  • 原文地址:https://www.cnblogs.com/wang-jingyuan/p/12174058.html
Copyright © 2011-2022 走看看