Android recyclerview的多item

给你一囗甜甜゛ 提交于 2021-02-16 21:48:45

recyclerview 多item方法

1.思路

显示多item,可以在adapter中对传入的值进行判断,然后根据不同的值绑定不同item的xml,再对其进行操作。比如你传入的数据中两个item要显示的内容不一样,那你可以判断某一个特殊的值是否为空,然后绑定不同的item。

2.举例

1.在getItemViewType判断传入的值


    @Override
    public int getItemViewType(int i) {
   
   
        if (comments.get(i).getNumber()!=null) {
   
   
            return ITEM_NUMBER;
        } else if (comments.get(i).getNumber()==null ) {
   
   
            return ITEM_COMMENTS;
        }
        return super.getItemViewType(i);
    }

comments是传入的List<comments>
Comments是一个全局变量
comments.get(i).getNumber()是获取到了某个值
ITEM_COMMENTS 和ITEM_NUMBER是定义的两个标记。


2.绑定不同item

@NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
   
   
        View view=null;
        RecyclerView.ViewHolder holder=null;
        if (i==ITEM_COMMENTS){
   
   
            view= LayoutInflater.from(context).inflate(R.layout.item_comment,viewGroup,false);
            holder=new ViewHolderComments(view);}
        else if (i==ITEM_NUMBER){
   
   
            view= LayoutInflater.from(context).inflate(R.layout.item_comment_number,viewGroup,false);
            holder=new ViewHolderNumber(view);}
        assert holder != null;
        return holder;
    }

这里分别绑定了item_comment_number和item_comment

3用不同的view holder绑定item里的控件

 public static class ViewHolderComments extends RecyclerView.ViewHolder {
   
   
      
      ·········
      //这里有点多就不贴上了
      
        public ViewHolderComments(@NonNull View itemView) {
   
   
            super(itemView);
            
           ········
           
        }
    }

    public static class ViewHolderNumber extends RecyclerView.ViewHolder {
   
   
        TextView number;
        public ViewHolderNumber(@NonNull View itemView) {
   
   
            super(itemView);
            number=itemView.findViewById(R.id.comment_number);
        }
    }

4。进行操作

 @Override
    public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int i) {
   
   
        if (holder instanceof ViewHolderComments){
   
   
            Glide.with(context).load(Objects.requireNonNull(comments.get(i).getAvatar())).into(((ViewHolderComments)holder).image);            ((ViewHolderComments)holder).date.setText(comments.get(i).getTime() +"");
          

//点赞按钮
            final boolean[] flag = {
   
   true};
            ((ViewHolderComments)holder).like.setOnClickListener(new View.OnClickListener() {
   
   
            @Override
            public void onClick(View v) {
   
   
                if (flag[0]){
   
   
                    flag[0] =false;
                    ((ViewHolderComments)holder).number.setText(comments.get(i).getLikes()+1 +"");
                    ((ViewHolderComments)holder).like.setBackgroundResource(R.drawable.good_t);

                }
                else {
   
    flag[0] =true;
                    ((ViewHolderComments)holder).number.setText(comments.get(i).getLikes()+"");
                    ((ViewHolderComments)holder).like.setBackgroundResource(R.drawable.good_f);}
            }
        });}
        else if (holder instanceof ViewHolderNumber){
        
            ((ViewHolderNumber)holder).number.setText(Objects.requireNonNull(comments.get(i).getNumber()));
        }

    }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!