RecyclerView多条目展示

本文介绍了如何在Android中使用RecyclerView实现多条目展示,通过自定义Adapter代码详细展示了其实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

废话不多说,直接上Adapter的代码

package com.example.week3_demo1;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Lenovo on 2017/10/21.
 */

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    Context context;
    List<Bean.DataBean> list = new ArrayList<>();
    private final int TYPE_IMG = 0, TYPE_CONTENT = 1;
    private onRecycleLisenter lisenter = null;

    public MyAdapter(Context context) {
        this.context = context;
    }

    public void addData(List<Bean.DataBean> list) {
        this.list.addAll(list);
        notifyDataSetChanged();
    }

    public void updateData(List<Bean.DataBean> list) {
        this.list.clear();
        addData(list);
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == TYPE_IMG) {
            View view1 = View.inflate(context, R.layout.img_item, null);
            final MyViewHolder1 holder1 = new MyViewHolder1(view1);
            if (lisenter != null) {
                view1.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        lisenter.onItemClickLisenter(v, holder1.getLayoutPosition());
                    }
                });
                view1.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View v) {
                        lisenter.onItemLongClickLisenter(v, holder1.getLayoutPosition());
                        return true;
                    }
                });
            }
            return holder1;
        } else {
            View view2 = View.inflate(context, R.layout.content_item, null);
            final MyViewHolder2 holder2 = new MyViewHolder2(view2);
            if (lisenter != null) {
                view2.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        lisenter.onItemClickLisenter(v, holder2.getLayoutPosition());
                    }
                });
                view2.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View v) {
                        lisenter.onItemLongClickLisenter(v, holder2.getLayoutPosition());
                        return true;
                    }
                });
            }
            return holder2;
        }
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        final Bean.DataBean dataBean = list.get(position);
        if (holder instanceof MyViewHolder1) {
            Glide.with(context).load(dataBean.images.split("\\|")[0]).into(((MyViewHolder1) holder).img_iv);
            ((MyViewHolder1) holder).img_tv.setText(dataBean.subhead);
        } else if (holder instanceof MyViewHolder2) {
            ((MyViewHolder2) holder).content_tv.setText(dataBean.title);
            Glide.with(context).load(dataBean.images.split("\\|")[0]).into(((MyViewHolder2) holder).content_iv1);
            Glide.with(context).load(dataBean.images.split("\\|")[1]).into(((MyViewHolder2) holder).content_iv2);
            Glide.with(context).load(dataBean.images.split("\\|")[2]).into(((MyViewHolder2) holder).content_iv3);
        }

    }

    @Override
    public int getItemViewType(int position) {
        if (position % 2 == 0) {
            return TYPE_IMG;
        }
        return TYPE_CONTENT;
    }

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

    class MyViewHolder1 extends RecyclerView.ViewHolder {

        private final TextView img_tv;
        private final ImageView img_iv;

        public MyViewHolder1(View itemView) {
            super(itemView);
            img_tv = itemView.findViewById(R.id.img_tv);
            img_iv = itemView.findViewById(R.id.img_iv);
        }
    }

    class MyViewHolder2 extends RecyclerView.ViewHolder {

        private final TextView content_tv;
        private final ImageView content_iv1;
        private final ImageView content_iv2;
        private final ImageView content_iv3;

        public MyViewHolder2(View itemView) {
            super(itemView);
            content_tv = itemView.findViewById(R.id.content_tv);
            content_iv1 = itemView.findViewById(R.id.content_iv1);
            content_iv2 = itemView.findViewById(R.id.content_iv2);
            content_iv3 = itemView.findViewById(R.id.content_iv3);
        }
    }

    //暴露的方法
    public void setLisenter(onRecycleLisenter lisenter) {
        this.lisenter = lisenter;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值