PDA

Ver la Versión Completa : Insertar multiples imagenes en layout


juandqt
27/12/15, 11:38:02
Feliz navidad a todo el mundo :risitas:
Bueno, soy nuevo en este foro y la verdad, lo vi bastante bueno. Espero quedarme :ok:
Iré al grano, estoy intentando insertar dinamicamente imagenes (ImageView) en un array adapter. Pero este solo muestra 1 imagen, de por ejemplo, las 2 que quiero insertar. Pero, desafortunadamente no lo consigo. Y la verdad, no creo que sea cosa del arrayadapter, ya que este si que pilla y coloca muy bien los otros componentes que ha de cargar.

http://i66.tinypic.com/2nkgmr.jpg

El codigo seria este:

LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.ll_estrellas);

ImageView img1 = new ImageView(activity);
img1.setImageResource(R.drawable.estrella);

ImageView img2 = new ImageView(activity);
img2.setImageResource(R.drawable.estrella);


linearLayout.addView(img1);
linearLayout.addView(img2);

donde la variable linearlayout hace referencia a la layout(ya creada) para insertarle las siguientes imagenes.

El codigo completo seria este:


package com.example.juan.projecte_uf1;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
* Created by Juan on 25/12/2015.
*/
public class AdapterPelicula extends ArrayAdapter {
Activity activity;
Pelicula[] peliculas;

public AdapterPelicula(Activity activity, Pelicula[] peliculas) {
super(activity, R.layout.lay_pelicula,peliculas);
this.activity = activity;
this.peliculas = peliculas;
}

override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater layoutInflater = activity.getLayoutInflater();
View view = layoutInflater.inflate(R.layout.lay_pelicula, null);

TextView tv_titulo = (TextView) view.findViewById(R.id.tv_titulo);
tv_titulo.setText(peliculas[position].getTitle());
TextView tv_ano = (TextView) view.findViewById(R.id.tv_ano);
tv_ano.setText(peliculas[position].getYear().toString());
ImageView img_pelicula = (ImageView) view.findViewById(R.id.iv_imagen);
img_pelicula.setImageResource(peliculas[position].getImg());

LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.ll_estrellas);

ImageView img1 = new ImageView(activity);
img1.setImageResource(R.drawable.estrella);

ImageView img2 = new ImageView(activity);
img2.setImageResource(R.drawable.estrella);

linearLayout.addView(img1);
linearLayout.addView(img2);

return view;
}
}


¿Alguien me podria ayudar con esto? :nav3:

saludos

GabrielRMunoz
27/12/15, 11:44:58
¡Buenos días! ¿Podrías ser más específico con lo que quieres? No termino de entender cual tendría que ser el resultado. Espero poder ayudarte. ;-)

beta tester
27/12/15, 13:41:00
Me supongo que lo que quieres implementar es una especie de puntuación por estrellas, por lo que veo en la imagen. :pensando:

Para ello, creo que la solución más sencilla sería colocar el número de estrellas máximo en el Layout correspondiente a cada uno de los elementos de la lista, supongamos 5 estrellas. Posteriormente, desde la Activity o Fragment correspondiente, ocultar las estrellas que no sean necesarias. Suponiendo que queramos mostrar, por ejemplo, 3 estrellas, sería algo así:


ImageView img1 = (ImageView) view.findViewById(R.id.estrella_1);
ImageView img2 = (ImageView) view.findViewById(R.id.estrella_2);
ImageView img3 = (ImageView) view.findViewById(R.id.estrella_3);
ImageView img4 = (ImageView) view.findViewById(R.id.estrella_4);
ImageView img5 = (ImageView) view.findViewById(R.id.estrella_5);

img1.setVisibility(View.GONE);
img2.setVisibility(View.GONE);


Saludos! :nav3:

juandqt
27/12/15, 16:26:23
Me supongo que lo que quieres implementar es una especie de puntuación por estrellas, por lo que veo en la imagen. :pensando:

Para ello, creo que la solución más sencilla sería colocar el número de estrellas máximo en el Layout correspondiente a cada uno de los elementos de la lista, supongamos 5 estrellas. Posteriormente, desde la Activity o Fragment correspondiente, ocultar las estrellas que no sean necesarias. Suponiendo que queramos mostrar, por ejemplo, 3 estrellas, sería algo así:


ImageView img1 = (ImageView) view.findViewById(R.id.estrella_1);
ImageView img2 = (ImageView) view.findViewById(R.id.estrella_2);
ImageView img3 = (ImageView) view.findViewById(R.id.estrella_3);
ImageView img4 = (ImageView) view.findViewById(R.id.estrella_4);
ImageView img5 = (ImageView) view.findViewById(R.id.estrella_5);

img1.setVisibility(View.GONE);
img2.setVisibility(View.GONE);


Saludos! :nav3:

Lo has adivinado, ya esta, muchisimas gracias! :banananavidad: