entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Problemas con toggleButton dentro de un ListView

Buenas, estoy teniendo un problema, el caso es el siguiente. Muestro en un ListView unos ingredientes cargados de mysql, en el que muestro la imagen del ingrediente y el nombre.
Ahora yo les he añadido a cada elemento un ToggleButton para que el cliente seleccione los ingredientes que quiere.

El problema sucede cuando pulso el ToggleButton y voy arrastrando el ListView hacia abajo y vuelvo hacia arriba, se ha vuelto a quitar el botón pulsado, así con todos.

Tengo una clase especial para mostrar el ListView personalizado: CustomListViewAdapterIngr:

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    //convertView = null;
    ListViewItem item = items.get(position);

    View vi = convertView;

    if (convertView == null)
        vi = inflater.inflate(R.layout.layout_ingredientes, null);

    ImageView imgThumbnail = (ImageView) vi.findViewById(R.id.imgThumbnail);
    TextView txtNombre = (TextView) vi.findViewById(R.id.txtTitle);
    ToggleButton sino = (ToggleButton) vi.findViewById(R.id.tb1);

    new getImageUrl(imgThumbnail).execute(item.ThumbnailResource);
    txtNombre.setText(item.Nombre);

    return vi;
}

Necesitaré almacenar ese cambio en la vista pero he probado muchas cosas y nada.

Si pensáis que esta es una solución compleja, puedo almacenar las imágenes en la carpeta drawables e ir mostrando ingredientes con un checkbox.

1 Respuesta

1voto

white Puntos75820

Que tal si guardas el estado del Togglebutton en tu clase ListViewItem? intenta crear un campo booleano:

class ListViewItem {
    boolean isOn = false;

en tu adaptador agrega un listener al ToggleButton y define el estado:

sino.setChecked(item.isOn);
sino.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        item.isOn = !item.isOn;
    }
});

0voto

danielreales7 comentado

Sin más de 10 tu respuesta, muchísimas gracias por la ayuda.
Solamente tuve que cambiar de mi adaptador ListViewItem item = items.get(position); por: final ListViewItem item = items.get(position); y listo.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta