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系统自带的方法,看自己的需求。