AndroidAdapter回撥介面

samson_wang發表於2016-08-01

在Andoird中,當activity中需要處理adapter中ListView/或者其他列表的item點選事件,這時候需要用到回撥介面。
方式:在Adapter中定義的介面(相當於釋出),在activity中實現Adapter中定義的介面(相當於是響應)。
這樣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();  
    }  
    setAction(viewHolder.action_button, position,);  
    return convertView;  
 }  
   
 private void setAction(final View view,final int position) 
  {    
    view.setOnClickListener(new OnClickListener() {  
     @Override  
     public void onClick(View v) {  
      if(onItemPlayClick != null) {  
       onItemPlayClick.onItemClick(position);  
      }    
     }  
  });  
 } 
 public static interface OnPlayClickListener {  
  // true add; false cancel  
    public void onItemClick(int position); 
 }  
   
 // add click callback  
 OnPlayClickListener onItemPlayClick;  
  
 public void setOnPlayClickListener(OnPlayClickListener onItemPlayClick) {  
    this.onItemPlayClick = onItemPlayClick;  
 } 

Activity 中

adapter.setOnPlayClickListener(onItemActionClick);  

OnPlayClickListener onItemActionClick = new OnPlayClickListener() { 
  @Override  
   public void onItemClick(int position) {  
    System.out.println("點選。。。"+position);
    //業務處理
   }  
  };  


相關文章