public class ItemAdapter extends BaseAdapter {
LayoutInflater inflater;
Context context;
List<String> list;
public ItemAdapter(Context context, List<String> list) {
this.context = context;
this.list = list;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHodler holder;
if(convertView==null){
convertView=inflater.inflate(R.layout.item_layout, null);
holder=new ViewHodler();
// ImageView iv=(ImageView)convertView.findViewById(R.id.iv);
holder.tv=(TextView)convertView.findViewById(R.id.tv);
holder.btn=(Button)convertView.findViewById(R.id.btn);
convertView.setTag(holder);
}else{
holder=(ViewHodler)convertView.getTag();
}
holder.tv.setText(list.get(position));
addListener(convertView,position);
((ViewGroup)convertView).setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); //item点击和button点击同时监听
return convertView;
}
public void addListener(View convertView,final int position){
// ((ViewGroup)convertView).setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); //item点击和button点击同时监听
((Button)convertView.findViewById(R.id.btn)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.d("click", "buttonclick:"+position);
}
});
}
public static class ViewHodler{
ImageView iv;
TextView tv;
Button btn;
}
}
public class MainActivity extends Activity {
private ListView lv;
private ArrayList<String> al;
private ItemAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
al = new ArrayList<String>();
for (int i = 0; i < 100; i++) {
al.add("" + i);
}
adapter = new ItemAdapter(this, al);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Log.d("click", "itemclick"+arg3+" "+arg2);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
public class ItemAdapter extends BaseAdapter { LayoutInflater inflater; Context context; List list; public ItemAdapter(Context context, List list) { this.context = context; this.list = list;