Android Adapter回调接口

来源:互联网 发布:windows develop 编辑:程序博客网 时间:2024/05/29 11:16

   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可以进行相应的操作。

0 0