Lista mediante un ListView y adapter que contendrá una imágen y texto por fila.
Hola developers, hoy continuando con el blog, vamos a hacer una lista mediante un ListView y un adapter que contendrá una imágen y texto por fila. El programa consta de 3 clases, una de ellas la actividad principal, bien así a groso modo, primero se hace una clase en "bruto" de los elementos del item, que estos será una clase con un texto y una imágen, sencillito, un JavaBeans de toda la vida :
public class elemento { public Drawable imagen; public String texto; public long id; //CONSTRUCTOR2 public elemento(Drawable img,String text) { super(); this.texto =text; this.imagen=img; } //CONSTRUCTOR 1 public elemento(Drawable img,String text,long id) { super(); this.texto =text; this.imagen=img; this.id = id; } public Drawable getImagen() { return imagen; } public void setImagen(Drawable imagen) { this.imagen = imagen; } public String getTexto() { return texto; } public void setTexto(String texto) { this.texto = texto; } public long getId() { return id; } public void setId(long id) { this.id = id; } }
Hay 2 constructores, uno con el id y otro sin él, nosotros de momento solo nos preocuparemos del constructor2, que no tiene el id. Bien, ahora vamos haciendo nuestra activida principal, en la que en la interfad gráfica, hemos creado un ListView que hemos asignado un id=lista y además he importado a drawable 3 imágenes, que son las que usare de iconos para cada item.
public class MainActivity extends Activity { private MenuItem item; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1=(Button) findViewById(R.id.button1); ListView lista = (ListView) findViewById(R.id.lista); ArrayListarraydir = new ArrayList< elemento>(); elemento item; // Introduzco los datos item = new elemento(getResources().getDrawable(R.drawable.icon1), " Vectorial"); arraydir.add(item); item = new elemento(getResources().getDrawable(R.drawable.icon2), " Bitmap"); arraydir.add(item); item = new elemento(getResources().getDrawable(R.drawable.icon3), " 3D"); arraydir.add(item); } }
Continuamos haciendo la interfad de cada item, mediante un recurso XML que he llamado itemlista, en la carpeta res/layout XML
Como comentaba antes, se compone de una imagen y de un textView, en la que la idea en esencia, es que se rellene con la imagen y texto distintos de cada item.
Ahora si hay que tener en cuenta el constructor1 de la clase elemento, ya que el adaptador usa como índice el id.
¿Cómo se introduce una imagen y un texto en una lista? mediante el adaptador. Esta clase es un poco complicadilla, ya que hay varios métodos que se ejecutan automáticamente sin ser llamados, como el getView() pero una vez estudiada un poco, es facilita de comprender :
public class MenuAdapter extends BaseAdapter{ protected Activity activity; //ARRAYLIST CON TODOS LOS ITEMS protected ArrayListitems; //CONSTRUCTOR public MenuAdapter(Activity activity, ArrayList items) { this.activity = activity; this.items = items; } //CUENTA LOS ELEMENTOS @Override public int getCount() { return items.size(); } //DEVUELVE UN OBJETO DE UNA DETERMINADA POSICION @Override public Object getItem(int arg0) { return items.get(arg0); } //DEVUELVE EL ID DE UN ELEMENTO @Override public long getItemId(int position) { return items.get(position).getId(); } //METODO PRINCIPAL, AQUI SE LLENAN LOS DATOS @Override public View getView(int position, View convertView, ViewGroup parent) { // SE GENERA UN CONVERTVIEW POR MOTIVOS DE EFICIENCIA DE MEMORIA //ES UN NIVEL MAS BAJO DE VISTA, PARA QUE OCUPEN MENOS MEMORIA LAS IMAGENES View v = convertView; //ASOCIAMOS LA VISTA AL LAYOUT DEL RECURSO XML DONDE ESTA LA BASE DE CADA ITEM if(convertView == null){ LayoutInflater inf = (LayoutInflater) activity.getSystemService (Context.LAYOUT_INFLATER_SERVICE); v = inf.inflate(R.layout.itemlista, null); } elemento dir = items.get(position); //RELLENAMOS LA IMAGEN Y EL TEXTO ImageView foto = (ImageView) v.findViewById(R.id.imageItem); foto.setImageDrawable(dir.getImagen()); TextView nombre = (TextView) v.findViewById(R.id.textoItem); nombre.setText(dir.getTexto()); // DEVOLVEMOS VISTA return v; } }
Una vez echo el adaptador, sólo nos queda implementarlo en la actividad principal para que recorra el ListView y ponga todos los elementos que se le asignen, en este caso, solo he introducido 3.
public class MainActivity extends Activity { private Button b1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //b1=(Button) findViewById(R.id.button1); ListView lista = (ListView) findViewById(R.id.lista); ArrayListarraydir = new ArrayList< elemento>(); elemento item; // Introduzco los elementos item = new elemento(getResources().getDrawable(R.drawable.icon1), " Vectorial"); arraydir.add(item); item = new elemento(getResources().getDrawable(R.drawable.icon2), " Bitmap"); arraydir.add(item); item = new elemento(getResources().getDrawable(R.drawable.icon3), " 3D"); arraydir.add(item); //ADAPTER MenuAdapter adaptador = new MenuAdapter(this, arraydir); lista.setAdapter(adaptador); } }
No os preocupeis por el número de items, automáticamente se insertará un scroll para que con el dedo podamos arrastrar hasta abajo.Y este, es el resultado :
Podeis descargar el código fuente de thebestandroide con sólo compartir en facebook,twitter,linkedin o suscribirte a nuestro canal RSS más abajo.
muy buen tutorial
ResponderEliminarsinop
ResponderEliminarsakarya
gümüşhane
amasya
kilis
MİNVY7
tekirdağ
ResponderEliminartokat
elazığ
adıyaman
çankırı
KHWVM
görüntülü show
ResponderEliminarücretlishow
DS6D
istanbul evden eve nakliyat
ResponderEliminarkonya evden eve nakliyat
düzce evden eve nakliyat
bursa evden eve nakliyat
diyarbakır evden eve nakliyat
YH1J
68613
ResponderEliminarHuobi Güvenilir mi
Samsun Şehirler Arası Nakliyat
Balıkesir Lojistik
Konya Evden Eve Nakliyat
Bartın Evden Eve Nakliyat
Maraş Evden Eve Nakliyat
Antalya Evden Eve Nakliyat
Kütahya Lojistik
Ünye Kurtarıcı
C571D
ResponderEliminarDiyarbakır Parça Eşya Taşıma
Osmaniye Evden Eve Nakliyat
Erzincan Şehirler Arası Nakliyat
Nevşehir Evden Eve Nakliyat
Tokat Şehirler Arası Nakliyat
Karabük Parça Eşya Taşıma
Muğla Parça Eşya Taşıma
İstanbul Evden Eve Nakliyat
Tunceli Lojistik
9CFDE
ResponderEliminarAfyon Şehir İçi Nakliyat
Giresun Parça Eşya Taşıma
Edirne Şehir İçi Nakliyat
Paribu Güvenilir mi
Casper Coin Hangi Borsada
Ünye Kurtarıcı
Muğla Lojistik
Mersin Şehirler Arası Nakliyat
Urfa Lojistik
CFFBF
ResponderEliminarreferanskodunedir.com.tr
9EFB8
ResponderEliminarsakarya sesli sohbet
balıkesir görüntülü sohbet uygulamaları ücretsiz
afyon kadınlarla sohbet
bartın ucretsiz sohbet
batman parasız görüntülü sohbet
kırşehir canlı görüntülü sohbet siteleri
görüntülü sohbet
karabük sesli mobil sohbet
karabük seslı sohbet sıtelerı