您的位置:首页 > 移动开发 > Android开发

Android Adapter回调接口

2015-04-17 14:58 295 查看
   Andoird中当activity中需要处理adapter中listview的item点击事件,这时候需要用到回调接口,Adapter中定义的接口相当于发布,在activity中实现相当于是响应。

 这样activity中便可以获取adapter中的数据:
①回调接口可以把adapter中处理过的数据传给activity。
②Activity中获取item中数据可以直接用 adapter.getItem(position)获取,也可以直接在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可以进行相应的操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息