Android Adapter回调接口

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值