Andoird中当activity中需要处理adapter中listview的item点击事件,这时候需要用到回调接口,Adapter中定义的接口相当于发布,在activity中实现相当于是响应。
这样activity中便可以获取adapter中的数据:
①回调接口可以把adapter中处理过的数据传给activity。
②Activity中获取item中数据可以直接用 adapter.getItem(position)获取,也可以直接在activity获取到的数据中获取。
下面是代码:
Adapter中:
Activity中:
这样当点击item时,可以把数据传入activity,activity可以进行相应的操作。
下面是代码:
Adapter中:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
if (convertView == null) {
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
boolean subscribed = subscribed(item.userId);
setAction(ItemHolder.action_button, position,!subscribed);
return convertView;
}
private void setAction(final View view,final int position,final boolean add) {
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(onItemAddClick != null) {
onItemAddClick.onItemClick(position,add);
}
}
});
}
public static interface OnAddClickListener {
// true add; false cancel
public void onItemClick(int position,boolean add); //传递boolean类型数据给activity
}
// add click callback
OnAddClickListener onItemAddClick;
public void setOnAddClickListener(OnAddClickListener onItemAddClick) {
this.onItemAddClick = onItemAddClick;
}
Activity中:
AddSubscribeAdapter adapter = new AddSubscribeAdapter(mActivity, cacheHelper);
adapter.setOnAddClickListener(onItemActionClick);
mPullRefreshListView.setAdapter(adapter);
OnAddClickListener onItemActionClick = new OnAddClickListener() {
@Override
public void onItemClick(int position,boolean add) {
final LiveHallInfoEntity item = adapter.getItem(position);
if (add) { //接受Adapter传过来的数据进行操作
addSubscribe(item);
} else {
cancelSubscribe(item);
}
}
};
这样当点击item时,可以把数据传入activity,activity可以进行相应的操作。