Android ListView con Checkbox y todos los que se puede hacer clic

Posible duplicado:
Android: ¿enlazar datos de una base de datos a un CheckBox en un ListView?

Quiero usar un ListView con los elementos que tienen el siguiente diseño

------------------------- [CB] TV TV ------------------------- 

CB es una checkbox y TV es una vista de texto.

Ahora leí en alguna parte que no puedes tener elementos clicables en un ListView. Si tiene algunos, entonces no podrá hacer clic en ListItems. Pero si miro la aplicación GoogleMail, esto es posible. Puedo marcar varios mensajes con la checkbox (y luego seleccionar una acción para ellos) o puedo hacer clic en ListItem (o desplazarme con el dpad) para acceder a otra pantalla. ¿Alguien tiene un código / ejemplo de cómo esto es posible?

Establezca el CheckBox como focusable="false" en su diseño XML. De lo contrario, robará los eventos de clic de la vista de lista.

Por supuesto, si hace esto, necesita manipular manualmente marcando CheckBox como marcado / desmarcado si se hace clic en el elemento de la lista en lugar de en el CheckBox , pero es probable que desee eso de todos modos.

Establezca el adaptador de vista de lista en “simple_list_item_multiple_choice”

 ArrayAdapter adapter; List values; // put values in this //Put in listview adapter = new ArrayAdapter( this, android.R.layout.simple_list_item_multiple_choice, values); setListAdapter(adapter); 
 holder.checkbox.setTag(row_id); 

y

 holder.checkbox.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { CheckBox c = (CheckBox) v; int row_id = (Integer) v.getTag(); checkboxes.put(row_id, c.isChecked()); } }); 

este código funciona en mi proyecto y puedo seleccionar el elemento de vista de lista y la checkbox

        

El siguiente código te ayudará a:

 public class DeckListAdapter extends BaseAdapter{ private LayoutInflater mInflater; ArrayList teams=new ArrayList(); ArrayList teamcolor=new ArrayList(); public DeckListAdapter(Context context) { // Cache the LayoutInflate to avoid asking for a new one each time. mInflater = LayoutInflater.from(context); teams.add("Upload"); teams.add("Download"); teams.add("Device Browser"); teams.add("FTP Browser"); teams.add("Options"); teamcolor.add(Color.WHITE); teamcolor.add(Color.LTGRAY); teamcolor.add(Color.WHITE); teamcolor.add(Color.LTGRAY); teamcolor.add(Color.WHITE); } public int getCount() { return teams.size(); } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.decklist, null); holder = new ViewHolder(); holder.icon = (ImageView) convertView.findViewById(R.id.deckarrow); holder.text = (TextView) convertView.findViewById(R.id.textname); .......here you can use holder.text.setonclicklistner(new View.onclick. for each textview System.out.println(holder.text.getText().toString()); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.text.setText(teams.get(position)); if(position 

Espero que esto ayude.