自定义Adapter的接口,方便回调。Adapter与Activity之间的回调

来源:互联网 发布:37传奇霸业魂珠数据 编辑:程序博客网 时间:2024/06/05 01:14

1,接口写在Adapter里:

①:private OnCityClickListener onCityClickListener;//定义对象


②://写接口,并定义方法,根据自己的需求定义里面的方法(这等会是在adapter里实现的,在Activity里调用)

public interface OnCityClickListener {    void onCityClick(String name);    void onLocateClick();}
3:
public void setOnCityClickListener(OnCityClickListener listener) {    this.onCityClickListener = listener;}
4:在Adapter,的getView()方法里需要点击的地方调用
holder.name.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        if (onCityClickListener != null) {            onCityClickListener.onCityClick(city);        }    }});
holder.name为一个可以点击的控件,当点击的时候调用接口里的方法:
onCityClickListener.onCityClick(city);
5:实例化Adapter后就可以调用Adapter里的自己的接口方法,
mCityAdapter.setOnCityClickListener(new CityListAdapter.OnCityClickListener() {    @Override    public void onCityClick(String name) {        //back(name);        //回调数据使用        for (int i = 0; i < list_city2.size(); i++) {            if (name.equals(list_city2.get(i).getName())) {                City c = list_city2.get(i);                Intent intent_city = new Intent();                intent_city.putExtra("city_name", c.getName());                intent_city.putExtra("carory", c.getCarorg());                intent_city.putExtra("lsprefix", c.getLsprefix());                setResult(101, intent_city);                finish();                break;            }        }    }    @Override    public void onLocateClick() {        //  Log.e("onLocateClick", "重新定位...");        //  mCityAdapter.updateLocateState(LocateState.LOCATING, null);        // mLocationClient.startLocation();        initLocation();    }});
必须重写里面的方法,其实还是getView()中的方法进行触发的。
相当于是跟Adapter自定义一个方法。
其实你也可以调用Adapter系统自带的方法,看自己的需求。
0 0
原创粉丝点击