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


Android ListView con múltiples selecciones y adaptadores personalizados

Tengo un ListView con un adaptador de encargo. El ListView permite selección múltiple, pero de alguna manera no reconoce cuándo se selecciona un elemento.

Ya he hecho que los elementos del adaptador se extiendan Comprobable, pero aún así el getCheckedItemPositions() devuelve una matriz de falsos.

  • Selector de ListView de Android Color
  • ActionBarSherlock + maven + eclipse: dependencia no encontrada en el espacio de trabajo
  • Cortar, copiar y pegar en android
  • SYSTEM_ALERT_WINDOW - Cómo obtener este permiso automáticamente en Android 6.0 y targetSdkVersion 23
  • Campo de texto en WebView en un Android está oculto por el teclado
  • OnCreateOptionsMenu está siendo llamado demasiadas veces en ActionBar usando tabs
  • Supongo que hay algo fundamental que estoy haciendo mal, pero he sido incapaz hasta ahora de encontrar ejemplos de múltiples ListViews seleccionar donde el adaptador no era un ArrayAdapter usando el diseño por defecto para múltiples selecciones.

    Cualquier ayuda sería muy apreciada.

    El código está abajo:

    Clase principal:

     listView = (ListView) findViewById(R.id.cardlist); tca = new TextCardAdapter(mInflater); listView.setAdapter(tca); 

    Adaptador:

     public class TextCardAdapter extends BaseAdapter { private int count = 0; private List<CheckableCard> cardList = new ArrayList<CheckableCard>(); private LayoutInflater mInflater; public TextCardAdapter(LayoutInflater inflater) { this.mInflater = inflater; } @Override public int getCount() { return count; } @Override public Object getItem(int position) { return cardList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.textlayout_row, null, false); convertView.setClickable(true); holder = new ViewHolder(); holder.text = (TextView) convertView.findViewById(R.id.card_name); holder.checkbox = (CheckBox) convertView.findViewById(R.id.checkbox); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } final CheckableCard card = cardList.get(position); holder.text.setText(card.card.toString()); holder.checkbox.setChecked(card.isChecked()); holder.checkbox.setOnClickListener(card.checkListener); convertView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { card.checkListener.onClick(v); holder.checkbox.setChecked(card.isChecked()); } }); return convertView; } public void add(Card card) { cardList.add(new CheckableCard(card)); count++; notifyDataSetChanged(); } public void addAll(Collection<Card> cardColl) { for (Card c : cardColl) add(c); } public void removeAll() { count = 0; cardList.clear(); notifyDataSetChanged(); } public Card getCard(int position) { CheckableCard cc = (CheckableCard) getItem(position); if (cc == null) return null; return cc.card; } public class CheckableCard implements Checkable { private boolean checked = false; public final Card card; public final OnClickListener checkListener; public CheckableCard(Card card) { this.card = card; checkListener = new OnClickListener() { @Override public void onClick(View v) { toggle(); } }; } @Override public boolean isChecked() { return checked; } @Override public void setChecked(boolean checked) { this.checked = checked; } @Override public void toggle() { checked = !checked; } } static class ViewHolder { TextView text; CheckBox checkbox; } } 

  • Dependencia de Gradle basada en tipo de construcción y sabor
  • ¿Cómo hacer Android componentes de auto y utilizarlo de una biblioteca jar?
  • Android Studio no pudo encontrar un Jvm válido (relacionado con MAC OS)
  • Popupwindow con la imagen
  • Cómo agregar footer a NavigationView - Android diseño de la biblioteca de diseño?
  • ¿Es posible crear una biblioteca compartida multiplataforma con MonoDroid y MonoTouch que pueden ser utilizados por desarrolladores que no sean Mono?
  • 3 Solutions collect form web for “Android ListView con múltiples selecciones y adaptadores personalizados”

    Sólo tiene un intento:

    1. listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

    2. holder.checkbox.setFocusable(false);

    3. Creo que es la vista del elemento secundario listView shoudld implementa la interfaz verificable, lo que significa que la vista convertida (convertView) debe tener todo el método de Checkable.

    Tuve un problema como este una vez. Tiene algo que ver con el hecho de que tiene una vista en el adaptador que se puede seleccionar haciendo que el padre ignorarlo. Su eliminación le permite seleccionar de nuevo la fila de la vista de lista. Lo que has creado es básicamente un botón en un botón, android no le gusta eso 🙁

    Tuve un problema similar. Mi vista de elemento de lista es un RealativeLayout con un LinearLayout que contiene un CheckBox y un TextView. No onItem … Listener fue llamado hasta que estableciera CheckBox.focusable a false. Además, los objetos del adaptador no deben ser verificables, pero las vistas se utilizan como diseño para el elemento de lista.

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