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

Android - Inflar dos Layouts al mismo tiempo en un ListView

Hola.

Estoy intentando inflar dos Layouts al mismo tiempo en un ListView. En realidad lo he conseguido pero no exactamente de la manera que yo quería.

Este es el código del método getView de mi adaptador.

    @Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View v = convertView;
    //Create InstalacionEnLista object
    Instalacion inst = items.get(position);
    int id = inst.getIdCategoria();
    if(id == 1){
         if (convertView == null || convertView.findViewById(R.id.custom_todaslasinstalaciones_categoria_header_titulo)==null)
            {
            LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = inf.inflate(R.layout.custom_todaslasinstalaciones_header_categoria, null);
            TextView nombreCategoria = (TextView) v.findViewById(R.id.custom_todaslasinstalaciones_categoria_header_titulo);
            nombreCategoria.setText("Esto es una categoria");
            }

    }else{
        LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = inf.inflate(R.layout.custom_todaslasinstalaciones_conflecha, null);
        TextView nombre = (TextView) v.findViewById(R.id.custom_todaslasinstalaciones_conflecha_tvnombreinstalacion);
        nombre.setText(inst.getNombre());
    }
    return v;
}

Como veis, si el id es igual a 1, entonces se infla un Llayout indicando el nombre de una categoría. De lo contrario se infla otro.
Lo que yo deseo es que si el id equivale a uno se inflen los dos. Porque necesito que se infle el Layout para la categoría pero también para el elemento que se esta tratando.

Es decir, tal y como esta ahora, el elemento con el ideCategoria igual a 1 no se infla. Solo se infla su categoria.

No sé si me he explicado correctamente.

Gracias y un saludo.

1 Respuesta

1voto

egoitz_gonzalez Puntos10050

Al final la solución que encontré fue la de modificar el arrayList que se le pasa al adaptador. En el arrayList crear elementos que serán usado como categorías. Fue lo que se me ocurrió y por lo menos en pantalla sale el resultado que yo quería.

Después para mostrar los items en el listView he mantenido el código que tengo. Es decir, dependiendo de la condición que se cumpla se infla un layout o otro.

Hay una forma mas "elegante" de realizar este proceso pero no siempre sirve. En mi caso no me sirvió. Esto sería usando getViewTypeCount() y getItemViewType(int position).

Os dejo un enlaces de interés.

http://www.survivingwithandroid.com/2014/08/android-listview-with-multiple-row.html

0voto

white comentado

Sería bueno que pudieras marca esta respuesta como la solucion, asi damos el tema como resuelto.

saludos!

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