recyclerview的点击事件的重写

在Mainactivity中的设置,我在这添加了一个简单的吐司

recyclerview的点击事件的重写

上边是适配器中的添加

recyclerview的点击事件的重写

上方onBindViewHolder中添加的监听

下边是我的全部代码
//MainActivity
public class MainActivity extends AppCompatActivity {
    private RecyclerView rv1;
    private LinearLayoutManager layoutManager;
    private Myadapter myadapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        rv1 = (RecyclerView) findViewById(R.id.rv1);
        //创建线性布局
        layoutManager = new LinearLayoutManager(this);
        //水平方向
        layoutManager.setOrientation(OrientationHelper.HORIZONTAL);
        rv1.setLayoutManager(layoutManager);
        getFood();

    }

    public void getFood() {
        String url="http://www.qubaobei.com/";
        Retrofit.Builder builder=new Retrofit.Builder();
        builder.baseUrl(url)
                .addConverterFactory(GsonConverterFactory.create())
                .build()
                .create(NetService.class)
                .getdata().enqueue(new Callback<Info_>() {
            @Override
            public void onResponse(Call<Info_> call, Response<Info_> response) {
                Info_ body = response.body();
                final List<Info_.DataBean> data = body.getData();
                Log.e("lcy", "onResponse: "+data );
                //设置布局管理器
                myadapter=new Myadapter(data,MainActivity.this);
                rv1.setAdapter(myadapter);
                //设置条目点击事件
                myadapter.setOnItemClickListener(new Myadapter.OnItemClickListener() {
                    @Override
                    public void onItemClick(View view, int position) {
                        Toast.makeText(MainActivity.this, ""+data.get(position).getTitle(), Toast.LENGTH_SHORT).show();
                    }
                });
            }

            @Override
            public void onFailure(Call<Info_> call, Throwable t) {

            }
        });
    }
}

//适配器
public class Myadapter extends RecyclerView.Adapter<Myadapter.MyViewHolder>{
    private List<Info_.DataBean> data;
    private LayoutInflater inflater;
    private Context context;
    //属性
    private OnItemClickListener mOnItemClickListener;
    //构造
    public void setOnItemClickListener(OnItemClickListener listener) {
        this.mOnItemClickListener = listener;
    }
    //define interface  点击接口
    public  interface OnItemClickListener {
        void onItemClick(View view , int position);
    }

    public Myadapter(List<Info_.DataBean> data, Context context) {
        this.data = data;
        this.context = context;
        inflater=LayoutInflater.from(context);
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view=inflater.from(parent.getContext()).inflate(R.layout.item,parent,false);
        MyViewHolder myViewHolder=new MyViewHolder(view);
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, int position) {
        //加载图片
        Glide.with(context).load(data.get(position).getPic())
                .apply(RequestOptions.bitmapTransform(new CircleCrop()))
                .into(holder.iv1);
        holder.tv1.setText(data.get(position).getTitle());
        holder.tv2.setText(data.get(position).getCollect_num());
        holder.tv3.setText(data.get(position).getNum()+"");
        if(mOnItemClickListener != null){
            //为ItemView设置监听器
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position = holder.getLayoutPosition(); // 1
                    mOnItemClickListener.onItemClick(holder.itemView,position); // 2
                }
            });
        }
    }

    @Override
    public int getItemCount() {
        return data.size();
    }


    public static class MyViewHolder extends RecyclerView.ViewHolder{
        private ImageView iv1;
        private TextView tv1;
        private TextView tv2;
        private TextView tv3;
        public MyViewHolder(View itemView) {
            super(itemView);
            iv1=itemView.findViewById(R.id.iv1);
            tv1=itemView.findViewById(R.id.tv1);
            tv2=itemView.findViewById(R.id.tv2);
            tv3=itemView.findViewById(R.id.tv3);
        }
    }
}


相关文章: