美文网首页UI
RecycleView加载多种不同样式的布局

RecycleView加载多种不同样式的布局

作者: 景小帮 | 来源:发表于2021-01-05 11:49 被阅读0次

1.TopAdapter 适配器

public class TopAdapter  extends RecyclerView.Adapter {

   private ArrayListlist;

    private ContextmContent;

    public TopAdapter(ArrayList list, Context mContent) {

       this.list = list;

        this.mContent = mContent;

    }

    /**

    * 代表两个不同布局

    */

    public class leftViewHoderextends RecyclerView.ViewHolder {

      TextViewcontentTV;

        public leftViewHoder(@NonNull View itemView) {

           super(itemView);

            contentTV = itemView.findViewById(R.id.contentTV);

        }

}

    /**

    * 代表两个不同布局  控件初始化

     */

    public class rightViewHoderextends RecyclerView.ViewHolder {

      TextViewtitleTV;

        public rightViewHoder(@NonNull View itemView) {

           super(itemView);

            titleTV = itemView.findViewById(R.id.titleTV);

        }

}

  //重写此方法获取类型长度

    @Override

    public int getItemViewType(int position) {

         return list.get(position).getType();

    }

   //重写此方法 获取条目id

    @Override

    public long getItemId(int position) {

        return super.getItemId(position);

    }

  @NonNull

   @Override

    public RecyclerView.ViewHolderonCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

       //根据type 判断类型,加载布局

        if (viewType ==0) {

           View leftView = LayoutInflater.from(mContent).inflate(R.layout.reader_item, parent, false);

            return new leftViewHoder(leftView);

        }else {

           View rightView = LayoutInflater.from(mContent).inflate(R.layout.item_home, parent, false);

            return new rightViewHoder(rightView);

        }

}

/**

    * 根据类型填充数据

    * @param viewHolder

    * @param position

    */

    @Override

    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {

    if(list.get(position).getType() ==0){

           leftViewHoder leftViewHoder = (leftViewHoder) viewHolder;

            leftViewHoder.contentTV.setText(list.get(position).getName());

        }else if(list.get(position).getType() ==1){

           rightViewHoder rightViewHoder = (rightViewHoder)viewHolder;

            rightViewHoder.titleTV.setText(list.get(position).getName());

        }

}

  @Override

    public int getItemCount() {

          return list.size();

    }

}

2.实体类TopBeans

public class TopBeans implements Serializable {

private Stringname;

    private int type;

    public TopBeans(String name,int type){

       this.name = name;

        this.type = type;

    }

    public StringgetName() {

       return name;

    }

     public void setName(String name) {

          this.name = name;

    }

     public int getType() {

         return type;

    }

     public void setType(int type) {

          this.type = type;

    }

}

3.设置数据 Fragment 或者 Activity

public class TopBookFragmentextends Fragment {

  private ViewmRootView;

    private ArrayListlist;

    private TopAdaptermTopAdapter;

    private RecyclerViewrecyclerView;

    @Nullable

@Override

    public ViewonCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

       mRootView = inflater.inflate(R.layout.top_bookrack_fragment, container, false);

        initView();

        return mRootView;

    }

private void initView() {

        list =new ArrayList<>();

        TopBeans top1 =new TopBeans("张三",0);

        TopBeans top2 =new TopBeans("李四",1);

        TopBeans top3 =new TopBeans("王五",1);

        TopBeans top4 =new TopBeans("小明",0);

        TopBeans top5 =new TopBeans("花花",0);

        TopBeans top6 =new TopBeans("张三",1);

        list.add(top1);

        list.add(top2);

        list.add(top3);

        list.add(top4);

        list.add(top5);

        list.add(top6);

        recyclerView =mRootView.findViewById(R.id.recyclerView);

        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

        recyclerView.addItemDecoration(new RecycleViewDivider(

        getActivity(), LinearLayoutManager.VERTICAL, 2,getResources().getColor(R.color.addgraytv_color)));

        mTopAdapter =new TopAdapter(list,getActivity());

        recyclerView.setAdapter(mTopAdapter);

    }

}

注:xml 布局文件自己随便写就行

相关文章

网友评论

    本文标题:RecycleView加载多种不同样式的布局

    本文链接:https://www.haomeiwen.com/subject/znmioktx.html