为ListView/RecyclerView添加点击事件

要为ListView添加Item的点击事件,需要在adapter为每个Item设置点击事件,然后暴露给外部adapter调用,给ListView注册监听事件。具体代码:

public class ListViewAdapter extends ArrayAdapter<Book> implements View.OnClickListener{
    private int resourceID;
    private OnListViewOnClickedListener mOnItemClickListener = null;
    public ListViewAdapter(Context context, int resource ,List<Book> objects) {
        super(context, resource, objects);
        resourceID = resource;
    }


    public static interface OnListViewOnClickedListener {
        void onItemClick(View view , String data);
    }


    @Override
    public View getView(int position,View convertView,ViewGroup parent) {
        Book book = getItem(position);
        View view = LayoutInflater.from(getContext()).inflate(resourceID, parent, false);

        TextView title = (TextView) view.findViewById(R.id.list_item_title);
        TextView info = (TextView) view.findViewById(R.id.list_item_info);
        title.setText(book.getTitle());
        info.setText(book.getInfo());
//           给每个item注册点击事件
        view.setOnClickListener(this);
        return view;
    }

    @Override
    public void onClick(View view) {
        if (mOnItemClickListener != null) {
//            这里使用getTag方法获取数据
            mOnItemClickListener.onItemClick(view,(String) view.getTag());
        }
    }

    public void setOnItemClickListener(OnListViewOnClickedListener listener) {
//          获取得到的listener
        this.mOnItemClickListener = listener;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,554评论 25 709
  • RecyclerView侧重的是布局的灵活性,虽说可以替代ListView但是连基本的点击事件都没有,这篇文章就来...
    JohnKang阅读 1,565评论 1 1
  • 前几天整理了Java面试题集合,今天再来整理下Android相关的面试题集合.如果你希望能得到最新的消息,可以关注...
    Boyko阅读 3,731评论 8 135
  • 约摸五更天,我的家生丫鬟采月叫醒了我:“小姐,该起身了,今天可是要去选秀的。” 我朦朦胧胧的起了床,任由采月和采星...
    南萱阅读 583评论 0 1
  • 17岁的时候幻想自己是田螺姑娘 愿意为他偷偷做好所有事情 只为看那张惊喜的脸上露出笑容 20岁的时候人群中看他一眼...
    冷冬京阅读 156评论 0 0