Desplazar una Galería activa el estado presionado y elimina el escucha de clics de los sub-elementos

Tengo una galería de artículos bastante complicados. Cada elemento se compone de una imagen y 2 botones. Cuando la galería carga todo funciona, los botones hacen lo que se supone que, y el estado presionado para los botones sólo sucede en la presión real de los botones.

Sin embargo, tan pronto como desplazo la galería, los botones dejan de funcionar y hacer clic en cualquier lugar permite el estado presionado para los botones.

He intentado incrustar todo en un LinearLayout que no pase en eventos OnDown según esta respuesta sin embargo, esto apenas bloquea acontecimientos del tecleo.

Soy consciente de que Gallery no es el widget ideal para arreglos complicados como este, pero me pregunto si hay una solución mejor para este problema.

ACTUALIZAR:

Voy a tratar de explicar la arquitectura un poco. Tengo un FragmentActivity que contiene un ListFragment, que se compone de apenas un ListView.

El ListView se compone de grupos de elementos más pequeños (Bettable) junto con algunos meta información. Estos grupos se implementan como Gallerys. Específicamente he ampliado Galería (llamado OneGallery), que hace varias cosas, se asegura de que sólo un elemento se desplaza a la vez, y también transforma los elementos de la galería como el desplazamiento está sucediendo. Aquí está el código para eso

Aquí está el adaptador para la Galería

Y aquí está el código para el diseño de la apuesta

2 Solutions collect form web for “Desplazar una Galería activa el estado presionado y elimina el escucha de clics de los sub-elementos”

Intente agregar un nuevo diseño de contenedor alrededor de la vista secundaria y anule el setPressed. La galería dejará de pasar su estado sobre los niños y el comportamiento indeseado mencionado que usted describe será fijo.

Esto es el reciclaje de las vistas. Intente utilizar el patrón de ViewHolder y configurar el estado del elemento para cada llamada getView. Si desea hacerlo, debe mantener el estado de la vista en su objeto complejo. Por ejemplo, su objeto complejo contiene TextView, ImageView y CheckBox

public View getView(int position, View convertView, ViewGroup parent) { ComplexObject co = objects.get(position); // A ViewHolder keeps references to children views to avoid unneccessary calls // to findViewById() on each row. ViewHolder holder; // When convertView is not null, we can reuse it directly, there is no need // to reinflate it. We only inflate a new View when the convertView supplied // by ListView is null. if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item_icon_text, 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); holder.checkbox = (CheckBox)convertView.findViewById(R.id.checkbox); 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(co.getText()); holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2); holder.checkbox.setChecked(co.isChecked()); holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { co.setChecked(isChecked); } }); return convertView; } protected class ViewHolder{ TextView text; ImageView icon; CheckBox checkbox; } 

Espero que sea útil

  • Filtrado personalizado en Android con ArrayAdapter
  • SetOnItemClickListener en ListView no se dispara
  • Android: AbsListView.OnScrollListener SCROLL_STATE_IDLE no se llama después de SCROLL_STATE_TOUCH_SCROLL (versión 2.1)
  • ¿Cómo puedo añadir mi diseño dinámico a ListView?
  • Cómo manejar varios temporizadores de cuenta regresiva en ListView?
  • ¿Cómo afectar a elementos fuera de un listview cuando se hace clic en algunos elementos de la vista de lista?
  • Cómo hacer animación de traducción para cada elemento de vista de lista
  • No se puede cargar una imagen desde la URL
  • Cómo crear DrawerLayout programaticamente
  • Android ListView con múltiples selecciones y adaptadores personalizados
  • ListView de Android con casilla de verificación: desactiva automáticamente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.