RecyclerView——添加点击事件

来源:互联网 发布:php xpath 抓取内容 编辑:程序博客网 时间:2024/05/21 07:55

Android5.0谷歌退出了RecyclerView用与替代不好用的ListView,但是RecyclerView没有像listView一样的点击事件。所以需要自己添加。

下面直接粘下代码:

MainActivity.java

public class MainActivity extends AppCompatActivity {    private List<Bean> list = new ArrayList<>();    private RecyclerView ryList;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initDatas();        ryList = (RecyclerView) findViewById(R.id.ry_list);        LinearLayoutManager manager = new LinearLayoutManager(this);        ryList.setLayoutManager(manager);        MyAdapter adapter = new MyAdapter(list);        ryList.setAdapter(adapter);    }    /**     * 初始化数据     */    public void initDatas() {        for (int i = 0; i < 10; i++) {            Bean bean = new Bean();            bean.setImg(R.mipmap.ic_launcher);            bean.setName("名字:" + i);            list.add(bean);        }    }}

MyAdapter.java

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {    private List<Bean> list;    public MyAdapter(List<Bean> list) {        this.list = list;    }    @Override    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list, parent,                                                                     false);        final ViewHolder holder = new ViewHolder(view);        holder.beanView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                int position = holder.getAdapterPosition();                Toast.makeText(view.getContext(), "点击了第" + position + "个列表", Toast.LENGTH_SHORT)                     .show();            }        });        holder.ivImg.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                int position = holder.getAdapterPosition();                Toast.makeText(view.getContext(), "点击了第" + position + "张图片", Toast.LENGTH_SHORT)                     .show();            }        });        return holder;    }    @Override    public void onBindViewHolder(ViewHolder holder, int position) {        Bean bean = list.get(position);        holder.ivImg.setImageResource(bean.getImg());        holder.tvName.setText(bean.getName());    }    @Override    public int getItemCount() {        return this.list.size();    }    static class ViewHolder extends RecyclerView.ViewHolder {        View beanView;        ImageView ivImg;        TextView tvName;        public ViewHolder(View view) {            super(view);            beanView = view;            ivImg = (ImageView) view.findViewById(R.id.iv_img);            tvName = (TextView) view.findViewById(R.id.tv_name);        }    }}

可以看到,代码中,我们在ViewHolder中获取了子项布局的view,然后在onCreateViewHolder()方法中,设置监听事件。

0 0
原创粉丝点击