其他分享
首页 > 其他分享> > Android关于RecycleView中的Adapter详解

Android关于RecycleView中的Adapter详解

作者:互联网

什么是Adapter?

Adapter 对象充当AdapterView视图和底层数据之间的桥梁。适配器提供对数据项的访问。Adapter 还负责为android.view.View数据集中的每个项目制作一个。
简单来说,Adapter提供了一个将其他View嵌套进RecycleView的方法,使每个RecycleViewitem遵循自定义的视图。

Adapter的使用

定义 Adapter 时,您需要替换三个关键方法:

下面是一个典型的简单 Adapter示例,该 Adapter主要接受初始化时传来的List<user>数据,同时接受一个自定义点击事件接口。为了使RecycleView显示List的内容,需要将List大小及内容传入Adapter来显示。

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

	//定义所需传入的参数
    private List<User> users;
    private Context context;
    private OnItemClickListener listener;

	//初始化Adapter时传入相关参数
    public CustomAdapter(List<User> users,Context context,OnItemClickListener listener) {
        this.users = users;
        this.context = context;
        this.listener = listener;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
		//使每一个RecycleView中的视图都显示为R.layout.item的样式
        return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item,parent,false));
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
		//显示当前时间
        Date date = new Date();
        SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		//设置显示的文本
        holder.textView.setText(users.get(position).content);
        holder.tv_1.setText(ft.format(date));
		//设置每个item长按事件
        holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                listener.onLongClick(position,users.get(position));
                return false;
            }
        });
		//设置点击事件
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                listener.onClick(position,users.get(position));
            }
        });
    }

    @Override
    public int getItemCount() {
		//返回List的大小,使其全部显示
        return users.size();
    }

    class ViewHolder extends RecyclerView.ViewHolder{

        private TextView textView,tv_1;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
			//定位要设置的控件
            textView = itemView.findViewById(R.id.tv_content);
            tv_1 = itemView.findViewById(R.id.tv_date);
        }
    }

    public interface OnItemClickListener{
		//在初始化时获得事件
        void onClick(int pos,User user);
        void onLongClick(int pos,User user);
    }
}

总项目地址请看:记事本app

标签:ViewHolder,users,Adapter,RecycleView,Android,RecyclerView,public,View
来源: https://www.cnblogs.com/java-six/p/15863312.html