Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android ListView con la casilla de verificación y todos los duplicados

Posible duplicado:
Android: vinculación de datos de una base de datos a un CheckBox en un ListView?

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

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

CB es una casilla de verificación y TV es una vista de texto.

Ahora he leído en alguna parte que usted no puede tener artículos clickable en un ListView. Si tiene algunos, entonces no podrá hacer clic en los ListItems. Pero si miro la aplicación de GoogleMail, esto es posible. Puedo marcar varios mensajes con la casilla de verificación (y luego seleccionar una acción para ellos) o puedo hacer clic en el ListItem (o desplazarse con el dpad) para llegar a otra pantalla. ¿Alguien tiene código / ejemplo cómo esto es posible?

5 Solutions collect form web for “Android ListView con la casilla de verificación y todos los duplicados”

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

Por supuesto, si lo hace, debe manejar manualmente el marcado de la CheckBox verificación como marcada / desmarcada si se hace clic en el elemento de lista en lugar de la CheckBox verificación, pero probablemente quiera hacerlo de todos modos.

Establezca el adaptador listview en "simple_list_item_multiple_choice"

 ArrayAdapter<String> adapter; List<String> values; // put values in this //Put in listview adapter = new ArrayAdapter<UserProfile>( 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 listview y la casilla de verificación

 <?xml version="1.0" encoding="utf-8"?> <!-- Single List Item Design --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:clickable="true" > <TextView android:id="@+id/label" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="4" /> <CheckBox android:id="@+id/check" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:focusable="false" android:text="" > </CheckBox> </LinearLayout> 

El siguiente código le ayudará a:

 public class DeckListAdapter extends BaseAdapter{ private LayoutInflater mInflater; ArrayList<String> teams=new ArrayList<String>(); ArrayList<Integer> teamcolor=new ArrayList<Integer>(); 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<teamcolor.size()) holder.text.setBackgroundColor(teamcolor.get(position)); holder.icon.setImageResource(R.drawable.arraocha); return convertView; } class ViewHolder { ImageView icon; TextView text; } } 

Espero que esto ayude.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.