天天看点

RecyclerView适配器写法

之前学习阶段,开发过程中都使用的ListView,Android更新换代自己也要跟上,参照各位大神的博客使用了RecyclerView,记录一下,代码中注释非常详细不在赘述。

public class StudyRvAdapter extends RecyclerView.Adapter<StudyRvAdapter.ViewHolder> {
    private List<String> mList;
    private Context mContext;
	//构造器 获取要显示的数据和Context
    public StudyRvAdapter(List<String> mList, Context mContext) {
        this.mList = mList;
        this.mContext = mContext;
    }
	//初始化方法,设置布局样式,返回布局
	//对控件的赋值不可以写在这里,写在这里只会显示一条。只执行一次
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext())
                .inflate(R.layout.list_style_rv,viewGroup,false);
        ViewHolder viewHolder=new ViewHolder(view);
        return viewHolder;
    }
	//数据绑定 绑定控件对应事件
	//对控件赋值(如:textview赋值)的操作在这个方法里写
    @Override
    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
        viewHolder.tv_info1.setText(""+mList.get(i));
        viewHolder.iv_action.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        //单击imageView的操作
            }
        });
    }
	//返回item数量
	//这个方法默认创建return 0 不修改的话recyclerview会不显示数据
    @Override
    public int getItemCount() {
        return mList.size();
    }
	//获取item索引
    @Override
    public long getItemId(int position) {
        // TODO 自动生成的方法存根
        return position;
    }
	//Item中的控件
    static class ViewHolder extends RecyclerView.ViewHolder{
        ImageView iv_action;
        TextView tv_info1;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            iv_action = itemView.findViewById(R.id.iv_action);
            tv_info1 = itemView.findViewById(R.id.tv_info1);
        }
    }
           

继续阅读