在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);
//業務處理
}
};