item点击回调封装(改变带来Position的参数)

来源:互联网 发布:网络调试助手使用说明 编辑:程序博客网 时间:2024/06/10 23:40

item点击回调封装(改变带来Position的参数)

- 当ListVeiw的对象setOnItemClickListener()的时候,会进行注册并对源码监听以带来一些回调参数,或者事件的监听。

lvList.setOnItemClickListener(new OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view,                    int position, long id) {                    }            });

- 现在的问题是想改变回调带来的参数值,由于源码是不能改动的,那办法就一个就是增加一个中间类去继承ListView,同样去重写父类中的setOnItemClickListener();

@Override    public void setOnItemClickListener(            android.widget.AdapterView.OnItemClickListener listener) {        // TODO Auto-generated method stub        super.setOnItemClickListener(listener);    }
  • 但是显而易见的是还是会把点击事件设置给父类“super.setOnItemClickListener(listener);”,怎么办呢?很简单 现在只要把监听对象的引用listener改为this,并且把引用赋给引用的接口变量。
private OnItemClickListener mItemClickListener;@Override    public void setOnItemClickListener(            android.widget.AdapterView.OnItemClickListener listener) {        mItemClickListener = listener;        super.setOnItemClickListener(this);// 将点击事件设置给当前的RefreshListView    }
  • 现在点击事件在ListView的子类中,那么就可以实现OnItemClickListener接口中的OnItemClick()。重写这个方法的原因就是因为可以在方法里面让监听的引用去从父类中的onItemClick()带来参数,同时去改变参数值。
@Override    public void onItemClick(AdapterView<?> parent, View view, int position,            long id) {        if (mItemClickListener != null) {            mItemClickListener.onItemClick(parent, view, position                    - getHeaderViewsCount(), id);        }    }
0 0
原创粉丝点击