RecycleView的适配器

package com.example.recyclerview.ui.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.recyclerview.R;
import com.example.recyclerview.bean.ProductsBean;

import java.util.List;

public class RvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private List<ProductsBean.DataBean> list;
    private Context context;
    private final LayoutInflater layoutInflater;

    //1、先定义一个接口
    public interface OnItemClickListener {
        //单击
        void onClick(int position);

        //长按
        void onLongClick(int position);
    }

    //2、定义一个属性
    private OnItemClickListener onItemClickListener;

    //3、定义一个方法
    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

    public RvAdapter(Context context, List<ProductsBean.DataBean> list) {
        //创建布局加载器
        layoutInflater = LayoutInflater.from(context);
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        //加载条条目布局
        View view = layoutInflater.inflate(R.layout.item, parent, false);
        ViewHolder1 holder1 = new ViewHolder1(view);
        return holder1;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
        //给条目设置数据
        ProductsBean.DataBean dataBean = list.get(position);
        ViewHolder1 holder1 = (ViewHolder1) holder;
        String images = dataBean.getImages();
        String[] split = images.split("\\|");

        Glide.with(context).load(split[0]).into(holder1.iv);
        holder1.tvName.setText(dataBean.getTitle());
        holder1.tvProduce.setText(dataBean.getPrice() + "");

        //给条目设置点击事件
        holder1.ll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onItemClickListener.onClick(position);
            }
        });

        //给条目设置长按事件
        holder1.ll.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                onItemClickListener.onLongClick(position);
                return false;
            }
        });
    }

    //设置列表数据条目数量
    @Override
    public int getItemCount() {
        return list.size();
    }

    class ViewHolder1 extends RecyclerView.ViewHolder {

        private final ImageView iv;
        private final TextView tvName;
        private final TextView tvProduce;
        private final LinearLayout ll;

        public ViewHolder1(View itemView) {
            super(itemView);
            //找到条目里的各个组件
            ll = itemView.findViewById(R.id.ll);
            iv = itemView.findViewById(R.id.iv);
            tvName = itemView.findViewById(R.id.tvName);
            tvProduce = itemView.findViewById(R.id.tvProduce);

        }
    }

    /**
     * 删除条目
     *
     * @param position
     */
    public void removeItem(int position) {
        //移除集合中的条目
        this.list.remove(position);
        //刷新适配器
        notifyDataSetChanged();
    }

    /**
     * 删除时带动画效果
     * @param position
     */
    public void removeItemWithAnim(int position){
        //移除集合中的条目
        this.list.remove(position);

        notifyItemRemoved(position);
    }
}

猜你喜欢

转载自blog.csdn.net/sui_yz/article/details/80008858