1. 程式人生 > >在Activty中處理adapter中的監聽事件的寫法

在Activty中處理adapter中的監聽事件的寫法

public class MainAdapter extends BaseAdapter {
private OnClickListener listener;
private LayoutInflater inflater;
private ArrayList<People> peopleDatas = new ArrayList<People>();


public MainAdapter(Context context, OnClickListener listener) {
this.listener = listener;
this.inflater = LayoutInflater.from(context);
}


public void setData(ArrayList<People> data) {
if (null == data)
return;
peopleDatas.clear();
People people;
int size = data.size();
for (int i = 0; i < size; i++) {
people = data.get(i);
peopleDatas.add(people);
}
notifyDataSetChanged();
}


@Override
public int getCount() {
return peopleDatas.size();
}


@Override
public Object getItem(int arg0) {
return null;
}


@Override
public long getItemId(int arg0) {
return 0;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = inflater.inflate(R.layout.item_main, null);
viewHolder.tvName = (TextView) convertView.findViewById(R.id.tv_name);
viewHolder.btnClick = (Button) convertView.findViewById(R.id.btn_click);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
if (position < peopleDatas.size()) {
People people = peopleDatas.get(position);
if (null != people) {
viewHolder.btnClick.setTag(R.id.btn_click, position);
viewHolder.btnClick.setOnClickListener(listener);
viewHolder.tvName.setText(people.getName());
}
}
return convertView;
}


class ViewHolder {
TextView tvName;
Button btnClick;
}
}