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

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值