简略的实现listView中item多个控件以及点击事件

简单的实现listView中item多个控件以及点击事件

public class ProductSearch extends ListActivity {

private static class ProductSearchAdapter extends BaseAdapter { 
 
    private LayoutInflater mInflater; 
    private Bitmap mIcon1; 
    private Bitmap mIcon2; 
 
    public ProductSearchAdapter(Context context) { 
 
        mInflater = LayoutInflater.from(context); 
 
        // Icons bound to the rows. 
        mIcon1 = BitmapFactory.decodeResource(context.getResources(), 
                R.drawable.icon48x48_1); 
        mIcon2 = BitmapFactory.decodeResource(context.getResources(), 
                R.drawable.icon48x48_2); 
    } 
 
    @Override 
    public int getCount() { 
 
        return DATA.length; 
    } 
 
    @Override 
    public Object getItem(int position) { 
 
        return position; 
    } 
 
    @Override 
    public long getItemId(int position) { 
 
        return position; 
    } 
 
    @Override 
    public View getView(final int position, View convertView, 
            ViewGroup parent) { 
        ViewHolder holder; 
        Button btn=null; 
 
        if (convertView == null) { 
            convertView = mInflater.inflate(R.layout.productsearch, null); 
 
            // Creates a ViewHolder and store references to the two children 
            // views 
            // we want to bind data to. 
            holder = new ViewHolder(); 
            holder.text = (TextView) convertView.findViewById(R.id.text); 
            holder.icon = (ImageView) convertView.findViewById(R.id.icon); 
            btn=(Button)convertView.findViewById(R.id.prdsrcbutton); 
            convertView.setTag(holder); 
        } else { 
            // Get the ViewHolder back to get fast access to the TextView 
            // and the ImageView. 
            holder = (ViewHolder) convertView.getTag(); 
        } 
 
        // Bind the data efficiently with the holder. 
        holder.text.setText(DATA[position]); 
        holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2); 
 
        holder.icon.setOnClickListener(new View.OnClickListener() { 
 
            @Override 
            public void onClick(View v) { 
                Log.i("image", " u clicked on icon Position" + position); 
 
            } 
        }); 
        holder.text.setOnClickListener(new View.OnClickListener() { 
 
            @Override 
            public void onClick(View v) { 
                Log.i("Text", " u clicked on text Position" + position); 
 
            } 
        }); 
 
        btn.setOnClickListener(new View.OnClickListener() { 
 
            @Override 
            public void onClick(View v) { 
                Log.i("Button","U clicked on button"); 
 
            } 
        }); 
 
 
        return convertView; 
    } 
 
    static class ViewHolder { 
        TextView text; 
        ImageView icon; 
    } 
 
    private static final String[] DATA = { "Abbaye de Belloc", 
            "Abbaye du Mont des Cats" }; 
 
} 
 
ListView product_search_list; 
Button srch_btn; 
EditText srch_text; 
 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
 
    super.onCreate(savedInstanceState); 
    setListAdapter(new ProductSearchAdapter(this)); 
    // setContentView(R.layout.productsearch); 
    // getListView().setEmptyView(findViewById(R.id.text)); 
    // srch_text = (EditText)findViewById(R.id.prdsearchtb); 
    // srch_btn = (Button) findViewById(R.id.prdsearchtb); 
    // srch_btn.setOnClickListener(new View.OnClickListener() { 
    //       
    // @Override 
    // public void onClick(View v) { 
    // callProductSearchAdapter(); 
    // 
    // } 
    // }); 
 
} 
 
void callProductSearchAdapter() { 
    setListAdapter(new ProductSearchAdapter(this)); 
} 
 
private void createDialog(String title, String text, final Intent i) { 
    if (i == null) { 
        AlertDialog ad = new AlertDialog.Builder(this).setIcon( 
                R.drawable.alert_dialog_icon).setPositiveButton("Ok", null) 
                .setTitle(title).setMessage(text).create(); 
        ad.show(); 
    } 
} 

}