Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 31/03/12, 12:08:22
Avatar de Capitan Kirk
Capitan Kirk Capitan Kirk no está en línea
Usuario novato en la web
Mensajes: 28
 
Fecha de registro: mar 2012
Mensajes: 28
Modelo de smartphone: samsung galaxy sii
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Seleccionar un elemento

Hola, tengo una lista (un LinearLayout), que utilizo para poner un listado de libros con su autor, la clase la defino con:

public class Libro {
private String Titulo = "";
private String Autor = "";

public String getTitulo() {
return Titulo;
}

public String getAutor() {
return Autor;
}

public void setTitulo(String titulo) {
Titulo = titulo;
}

public void setAutor(String autor) {
Autor = autor;
}
}


La coloco con:

final ListView lv;
lv = (ListView)findViewById(R.id.list);
setListAdapter(new LibroAdapter(this, R.layout.lista_item, Libros));


y hasta aquí todo va bien.
El problema es que quiero obtener el campo "Titulo" del elemento seleccionado, y esto no logro hacerlo, simplemente el programa se rompe al poner:

lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// que pongo aquí?
}
});


Entonces ¿porque se rompe el problema con este ultimo trozo de código?, ¿que tendría que poner en su lugar?, y ¿como hago para obtener el "Titulo" del elemento seleccionado?
Responder Con Cita


  #2  
Viejo 31/03/12, 16:44:15
Avatar de Afsoon
Afsoon Afsoon no está en línea
Miembro del foro
Mensajes: 225
 
Fecha de registro: may 2010
Mensajes: 225
Mencionado: 0 comentarios
Tagged: 0 hilos
Pero donde quieres que se muestre la información en un activity diferente o en la misma activity, porque obtener los datos es muy fácil:

Código:
libros.get(position).getAutor();
Si usas List con eso es suficiente para obtener el autor del elemento seleccionado, ahora lo que falta es como quieres que se muestre la información. Si en una activity diferente o no. Si es en otra activity diferente deberías de usar el bundle y incluirle la variable position (es lo que hago yo y me funciona) y en la otra activity mostrar toda la información.
Responder Con Cita
  #3  
Viejo 31/03/12, 17:03:22
Avatar de Capitan Kirk
Capitan Kirk Capitan Kirk no está en línea
Usuario novato en la web
Mensajes: 28
 
Fecha de registro: mar 2012
Mensajes: 28
Modelo de smartphone: samsung galaxy sii
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Pues no me funciona, nada más poner lo que me has dicho me aparece subrayado la palabra "libros".
Realmente el código anterior no es mio, es de la web: http://blog.findemor.es/2011/02/como...ndroid-guia-4
si pudieras hecharle una miradita a la aplicación completa sería ideal.

Yo quería modificarlo para poder seleccionar un elemento y enviarle a otra activity el titulo del libro seleccionado.

Pero no lo consigo...
como ya dije, simplemento poniendo:

lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// que pongo aquí?
}
});

se me interrumpe inesperadamente la aplicación.
Por cierto, el código anterior lo pongo dentro del:
public void onCreate(Bundle savedInstanceState)

Hay que ponerlo ahí, ¿no?


P.D.: Acabo de darme cuenta que el codigo que he puesto es confuso, fruto de modificaciones y más modificaciones del código origial, así que vuelto a empezar partiendo del código original de http://blog.findemor.es/2011/02/como...ndroid-guia-4
pero sigo con el mismo probema, no se como hacer que los elementos de la lista sean seleccionables y obtener el título del libro contenido en el item seleccionado.

Última edición por Capitan Kirk Día 31/03/12 a las 18:04:04
Responder Con Cita
  #4  
Viejo 01/04/12, 02:08:35
Avatar de Maurikius1983
Maurikius1983 Maurikius1983 no está en línea
Miembro del foro
Mensajes: 204
Compra y venta: (2)
 
Fecha de registro: mar 2010
Localización: Sevilla
Mensajes: 204
Modelo de smartphone: HTC Desire, HTC Desire HD, Note, OPO, L1520, S6
Tu operador: Orange
Mencionado: 1 comentarios
Tagged: 0 hilos
Mira yo tengo un problema parecido al tuyo, tengo un "listView" y para seleccionar los "Item" utilizo un "switch" y cada "case" es una item, lo que fallo es que solo se me abre con el primer "case" y no se mostrar una imagen distinta para cada "item" en una misma "activity". te dejo mi codigo por si te sirve.


package com.mauristudio.LaVerdad;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;



public class LaVerdadDeEllos extends ListActivity{

String curiosidadesEllos[] = {
"Curiosidad de Ella 0","Curiosidad de Ella 1", "Curiosidad de Ella 2", "Curiosidad de Ella 3",
"Curiosidad de Ella 4", "Curiosidad de Ella 5", "Curiosidad de Ella 6", "Curiosidad de Ella 7",
"Curiosidad de Ella 8", "Curiosidad de Ella 9", "Curiosidad de Ella 10", "Curiosidad de Ella 11"
};

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, curiosidadesEllos));

}

@Override
protected void onListItemClick(ListView list, View view, int position, long id){
super.onListItemClick(list, view, position, id);

switch (position) {
case 0:
Intent Vinyeta0 = new Intent(LaVerdadDeEllos.this, MostrarVinyetas.class);
this.startActivity(Vinyeta0);
break;

/*case 1:
Intent Vinyeta1 = new Intent(LaVerdadDeEllos.this, MostrarVinyetas.class);
this.startActivity(Vinyeta1);
break;

case 2:
Intent Vinyeta2 = new Intent(LaVerdadDeEllos.this, MostrarVinyetas.class);
this.startActivity(Vinyeta2);
break;

case 3:
Intent Vinyeta3 = new Intent(LaVerdadDeEllos.this, MostrarVinyetas.class);
this.startActivity(Vinyeta3);
break; *

//Tengo comentado todos los case menos el primero porque si no la aplicacion me da FC
}

}

}
Responder Con Cita
  #5  
Viejo 01/04/12, 11:44:06
Avatar de Capitan Kirk
Capitan Kirk Capitan Kirk no está en línea
Usuario novato en la web
Mensajes: 28
 
Fecha de registro: mar 2012
Mensajes: 28
Modelo de smartphone: samsung galaxy sii
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Hola Maurikius1983, no veo el fallo en tu código, pero si solo usas un "<TextView>" en cada linea de tu "listView"te sugiero que mires esta web: http://androideity.com/2011/08/27/co...ndroid-listas ahi tienes un código que funciona perfectamente.

Sin embargo si a ese código le añado un segundo "<TextView>" o un "<ImageView>" da error inmediatamente, a ver si alguien nos puede ayudar.
Responder Con Cita
  #6  
Viejo 01/04/12, 12:29:49
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
¿Qué quiere decir que el programa se rompe? ¿Te da excepción? ¿Qué excepción te da?

Partiendo de que LibroAdapter esté correcta, y debe estarlo si los elementos te los muestra, no veo ningún fallo en el onItemClickListener.
Responder Con Cita
  #7  
Viejo 01/04/12, 12:45:12
Avatar de Capitan Kirk
Capitan Kirk Capitan Kirk no está en línea
Usuario novato en la web
Mensajes: 28
 
Fecha de registro: mar 2012
Mensajes: 28
Modelo de smartphone: samsung galaxy sii
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Kriogen, cuando digo se rompe quiero decir que me sale en el emulador el mensajito de que se ha cerrado inesperadamente.

Como dije más arriba puede ser culpa mia, ya que he modificado el código muchas veces, por eso lo he borrado y he recuperado el código original de http://blog.findemor.es/2011/02/como...ndroid-guia-4, podrias echarle una miradita, por favor?, el codigo principal lo pongo a continuación, ¿puedes decirme ahi como harías para seleccionar un elemento? me refiero a donde y como pondrias lo del "setOnItemClickListene" y como obtengo el campo título del elemento seleccionado.


---------------------------------------------------------------------------------------------

package com.example.tolkienlibrary;

import java.util.ArrayList;

import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class ControladorLista extends ListActivity {

public class Libro {
private String Titulo = "";
private String Autor = "";

public String getTitulo() {
return Titulo;
}

public String getAutor() {
return Autor;
}

public void setTitulo(String titulo) {
Titulo = titulo;
}

public void setAutor(String autor) {
Autor = autor;
}
}

private class LibroAdapter extends ArrayAdapter<Libro> {

private ArrayList<Libro> items;

public LibroAdapter(Context context, int textViewResourceId, ArrayList<Libro> items) {
super(context, textViewResourceId, items);
this.items = items;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.lista_item, null);
}
Libro libro = items.get(position);
if (libro != null) {
TextView ttitulo = (TextView) v.findViewById(R.id.titulo);
TextView tautor = (TextView) v.findViewById(R.id.autor);
if (ttitulo != null) {
ttitulo.setText(libro.getTitulo());
}
if (tautor != null) {
tautor.setText(libro.getAutor());
}
}
return v;
}
}

/** Called when the activity is first created. *
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Obtenemos la lista de Libros
ArrayList<Libro> Libros = getItems();
// Entregamos la lista de Libros al adaptador de la lista en el Layout Lista.xml
setListAdapter(new LibroAdapter(this, R.layout.lista_item, Libros));
}

/*
* Obtiene una lista de libros
*
* @returns ArrayList<Libro> libros
*
public ArrayList<Libro> getItems() {
ArrayList<Libro> MiLista = new ArrayList<Libro>();

// Creamos los objetos Libro
Libro libro1 = new Libro();
libro1.setTitulo("El Silmarillion");
libro1.setAutor("J.R.R. Tolkien");

Libro libro2 = new Libro();
libro2.setTitulo("El Señor de los Anillos");
libro2.setAutor("J.R.R. Tolkien");

Libro libro3 = new Libro();
libro3.setTitulo("Los propios dioses");
libro3.setAutor("Isaac Asimov");

// Añadimos los libros a la lista
MiLista.add(libro1);
MiLista.add(libro2);
MiLista.add(libro3);

return MiLista;
}
}

Última edición por Capitan Kirk Día 01/04/12 a las 12:52:30
Responder Con Cita
  #8  
Viejo 01/04/12, 13:28:42
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Yo no he usado nunca ListActivity, prefiero programar el ListView a pelo ya que me deja más libertad para configurar la pantalla con más controles y poner el ListView donde yo quiera.

Pero debería ser algo más o menos así justo al final del OnCreate (partiendo de tu código inicial):

getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// que pongo aquí?
}
});

Y en el que pongo aquí?, pues lo que quieras, pon un Toast que te muestre el position que has pulsado como punto de partida, para comprobar que todo está funcionando bien.
Responder Con Cita
  #9  
Viejo 01/04/12, 22:34:36
Avatar de Maurikius1983
Maurikius1983 Maurikius1983 no está en línea
Miembro del foro
Mensajes: 204
Compra y venta: (2)
 
Fecha de registro: mar 2010
Localización: Sevilla
Mensajes: 204
Modelo de smartphone: HTC Desire, HTC Desire HD, Note, OPO, L1520, S6
Tu operador: Orange
Mencionado: 1 comentarios
Tagged: 0 hilos
Pues esto se asemeja ya a lo que quiero. Ya he conseguido que el primer case me muestre una imagen y gracias a vuestros consejos, ahora edito el listView a mi antojo y lo puedo poner mas acorde con la app. lo unico que nesecitaria ahora es poder cambiar la imagen, que al pulsar otro item de la lista me muestre otra imagen. Lo podria hacer creando una activity por imagen pero entiendo que otro metodo abrá ya que esto seria muy poco profesional.

Codigo Actividad con listView.

public class LaVerdadDeEllos extends Activity{


ListView lv;
String curiosidadesEllos[] = {
"Curiosidad de El 1", "Curiosidad de El 2", "Curiosidad de El 3", "Curiosidad de El 4",
"Curiosidad de El 5", "Curiosidad de El 6", "Curiosidad de El 7", "Curiosidad de El 8",
"Curiosidad de El 9", "Curiosidad de El 10", "Curiosidad de El 11", "Curiosidad de El 12"
};


public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.ellos);
lv = (ListView)findViewById(R.id.list_el);
lv.setAdapter(new ArrayAdapter(this,R.layout.list_style,curiosidades Ellos));

lv.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

switch (position) {
case 0:
Intent imagen1 = new Intent(LaVerdadDeEllos.this, MostrarImgEl.class);
startActivity(imagen1);
break;
}

}
});

}

}

/////////////////////////////////////////////////////////////////////////////////////////////

codigo donde mostrar img

public class MostrarImgEl extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mostrar_img_el);

ImageView image1 = (ImageView) findViewById(R.id.img_el);
}



}
Responder Con Cita
  #10  
Viejo 01/04/12, 23:02:10
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Lo que quieres es que al pulsar un item te muestre la imagen en una nueva activity en grande, ¿no?

Manda la imagen que has pulsado en un Bundle.
Responder Con Cita
  #11  
Viejo 01/04/12, 23:44:26
Avatar de Maurikius1983
Maurikius1983 Maurikius1983 no está en línea
Miembro del foro
Mensajes: 204
Compra y venta: (2)
 
Fecha de registro: mar 2010
Localización: Sevilla
Mensajes: 204
Modelo de smartphone: HTC Desire, HTC Desire HD, Note, OPO, L1520, S6
Tu operador: Orange
Mencionado: 1 comentarios
Tagged: 0 hilos
Justamente lo mismo, es decir ¿con un bundle puedo modificar la imagen que se ve en la otra actividad o mostraria una imagen por delante ( como los z-index)?.
-Voy a buscar info sobre eso. Oye muchas gracias. mi idea es esa que al pulsar un item me muestre una imagen a pantalla completa, la primera idea es en una actividad nueva que sea la que muestre las imagenes no se si hay otra forma de hacerlo,
-Van a ir viñetas con curiosidades de hombres y mujeres.
Responder Con Cita
  #12  
Viejo 02/04/12, 00:19:12
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Puedes hacer 2 cosas:

1) Mandar la imagen que hay que mostrar en un Bundle y en el OnStart de la activity establecer la imagen.

2) Puedes tener la imagen en el mismo Activity que el ListView, cuando pulsas un elemento ocultas el ListView y muestras la imagen, haciendo esto también tendrías que sobreescribir la pulsación del Back para que al pulsarlo hiciese la operación inversa.

De los 2 métodos el más elegante es el primero.
Responder Con Cita
  #13  
Viejo 02/04/12, 03:22:19
Avatar de Maurikius1983
Maurikius1983 Maurikius1983 no está en línea
Miembro del foro
Mensajes: 204
Compra y venta: (2)
 
Fecha de registro: mar 2010
Localización: Sevilla
Mensajes: 204
Modelo de smartphone: HTC Desire, HTC Desire HD, Note, OPO, L1520, S6
Tu operador: Orange
Mencionado: 1 comentarios
Tagged: 0 hilos
Si me dices que el primero ese haré, en resumidas cuentas en la opción 1, lo que voy a hacer es utilizar la actividad para mostrar como contenedor y le iré enviando imágenes para mostrar. a través del método onStar(). Que es exactamente lo que yo quería desde un principio.
Pues muchas gracias maestro a lo largo de esta semana iré avanzando y ya te informo de como va el tema.
Responder Con Cita
  #14  
Viejo 02/04/12, 12:03:15
Avatar de Capitan Kirk
Capitan Kirk Capitan Kirk no está en línea
Usuario novato en la web
Mensajes: 28
 
Fecha de registro: mar 2012
Mensajes: 28
Modelo de smartphone: samsung galaxy sii
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
siiiiiiiiiiiii, funciona, gracias a la ayuda de kriogeN, lo de seleccionar un elemento me ha quedado así (con un toast), modifico el código que pongo en el mensaje número 7 de este hilo y quedaría así:


-------------------------------------------------------------------------------------------------------------
package com.example.tolkienlibrary;

import java.util.ArrayList;

import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class ControladorLista extends ListActivity {

public class Libro {
private String Titulo = "";
private String Autor = "";

public String getTitulo() {
return Titulo;
}

public String getAutor() {
return Autor;
}

public void setTitulo(String titulo) {
Titulo = titulo;
}

public void setAutor(String autor) {
Autor = autor;
}

}

private class LibroAdapter extends ArrayAdapter<Libro> {

private ArrayList<Libro> items;

public LibroAdapter(Context context, int textViewResourceId, ArrayList<Libro> items) {
super(context, textViewResourceId, items);
this.items = items;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.lista_item, null);
}
Libro libro = items.get(position);
if (libro != null) {
TextView ttitulo = (TextView) v.findViewById(R.id.titulo);
TextView tautor = (TextView) v.findViewById(R.id.autor);
if (ttitulo != null) {
ttitulo.setText(libro.getTitulo());
}
if (tautor != null) {
tautor.setText(libro.getAutor());
}
}
return v;
}
}
final public static String MyKey = "mikey";
/** Called when the activity is first created. *
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Obtenemos la lista de Libros
final ArrayList<Libro> Libros = getItems();
// Entregamos la lista de Libros al adaptador de la lista en el Layout Lista.xml
setListAdapter(new LibroAdapter(this, R.layout.lista_item, Libros));


getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

Toast toast = Toast.makeText(getApplicationContext(), Libros.get(position).getTitulo(), Toast.LENGTH_SHORT);
toast.show();

}
});


}

/*
* Obtiene una lista de libros
*
* @returns ArrayList<Libro> libros
*
public ArrayList<Libro> getItems() {
ArrayList<Libro> MiLista = new ArrayList<Libro>();

// Creamos los objetos Libro
Libro libro1 = new Libro();
libro1.setTitulo("El Silmarillion");
libro1.setAutor("J.R.R. Tolkien");

Libro libro2 = new Libro();
libro2.setTitulo("El Señor de los Anillos");
libro2.setAutor("J.R.R. Tolkien");

Libro libro3 = new Libro();
libro3.setTitulo("Los propios dioses");
libro3.setAutor("Isaac Asimov");

// Añadimos los libros a la lista
MiLista.add(libro1);
MiLista.add(libro2);
MiLista.add(libro3);

return MiLista;
}
}

----------------------------------------------------------------------------------------------

Última edición por Capitan Kirk Día 02/04/12 a las 12:21:44
Responder Con Cita
  #15  
Viejo 02/04/12, 12:26:02
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Suponiendo que el código anterior esté dentro del onCreate, y a continuación de ArrayList<Libro> libros= getItems()

Tienes 2 opciones:

1) Declarar a ArrayList<Libro> libros como global, y así en el código dentro del onCreate simplemenente tendrías:

libros = getItems();

2) Declarar a ArrayList<Libro> libros como final dentro del onCreate, y así tendrías esto:

final ArrayList<Libro> libros = getItems();
Responder Con Cita
  #16  
Viejo 03/04/12, 12:45:34
Avatar de Capitan Kirk
Capitan Kirk Capitan Kirk no está en línea
Usuario novato en la web
Mensajes: 28
 
Fecha de registro: mar 2012
Mensajes: 28
Modelo de smartphone: samsung galaxy sii
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Hola Maurikius1983, he conseguido modificar el codigo de la aplicación:
http://blog.findemor.es/2011/02/como...ndroid-guia-4

ahora en cada item podemos poner la foto que queramos y 2 textos, y además los items son clickeables y le enviamos la variable "titulo" a la activity siguiente, ¿es lo que estabas buscando, verdad?

te paso el código, el resto de achivos los puedes pillar de la web que te doy ahi arriba y las fotos (chiquitinas unos 100x100 pixeles) las pones en la carpeta drawable (en mi caso se llaman perro y gato). Mira a ver si te vale.

----------------------------------------------------------------------------------------------------
package com.example.tolkienlibrary;

import java.util.ArrayList;


import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class ControladorLista extends ListActivity {

public class Libro {
private String Titulo = "";
private String Autor = "";
private String Imagen = "";

public String getTitulo() {
return Titulo;
}

public String getAutor() {
return Autor;
}

public String getImagen() {
return Imagen;
}

public void setTitulo(String titulo) {
Titulo = titulo;
}

public void setAutor(String autor) {
Autor = autor;
}

public void setImagen(String imagen) {
Imagen = imagen;
}
}

private class LibroAdapter extends ArrayAdapter<Libro> {

private ArrayList<Libro> items;

public LibroAdapter(Context context, int textViewResourceId, ArrayList<Libro> items) {
super(context, textViewResourceId, items);
this.items = items;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.lista_item, null);
}
Libro libro = items.get(position);

if (libro != null) {

TextView ttitulo = (TextView) v.findViewById(R.id.titulo);
TextView tautor = (TextView) v.findViewById(R.id.autor);
ImageView timagen = (ImageView) v.findViewById(R.id.icono);

if (ttitulo != null) {
ttitulo.setText(libro.getTitulo());
}
if (tautor != null) {
tautor.setText(libro.getAutor());
}
if (timagen != null) {
int res_imagen = ControladorLista.this.getResources().getIdentifier ("drawable/"+libro.getImagen(), null, ControladorLista.this.getPackageName());
timagen.setImageResource(res_imagen);
}
}
return v;
}
}


/** Called when the activity is first created. *
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


// Obtenemos la lista de Libros
final ArrayList<Libro> Libros = getItems();
// Entregamos la lista de Libros al adaptador de la lista en el Layout Lista.xml
setListAdapter(new LibroAdapter(this, R.layout.lista_item, Libros));



getListView().setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

Intent intent = new Intent(view.getContext(),sonido.class);
Bundle bundle = new Bundle();
bundle.putString("animal", Libros.get(position).getTitulo());
intent.putExtras(bundle);
startActivity(intent);
}
});
}

/*
* Obtiene una lista de libros
*
* @returns ArrayList<Libro> libros
*
public ArrayList<Libro> getItems() {
ArrayList<Libro> MiLista = new ArrayList<Libro>();

// Creamos los objetos Libro
Libro libro1 = new Libro();
libro1.setTitulo("Perro");
libro1.setAutor("guau guau guau");
libro1.setImagen("perro");

Libro libro2 = new Libro();
libro2.setTitulo("Gato");
libro2.setAutor("miau miau miau");
libro2.setImagen("gato");


// Añadimos los libros a la lista
MiLista.add(libro1);
MiLista.add(libro2);

return MiLista;
}
}
Responder Con Cita
  #17  
Viejo 08/05/12, 13:53:31
Avatar de Capitan Kirk
Capitan Kirk Capitan Kirk no está en línea
Usuario novato en la web
Mensajes: 28
 
Fecha de registro: mar 2012
Mensajes: 28
Modelo de smartphone: samsung galaxy sii
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Aunque el código anterior funciona, lo hace para un ListActivity, y me pregunto que tendría que cambiar para que funcione para una Activity normal

Cita:
Originalmente Escrito por kriogeN Ver Mensaje
Yo no he usado nunca ListActivity, prefiero programar el ListView a pelo ya que me deja más libertad para configurar la pantalla con más controles y poner el ListView donde yo quiera.
Había visto esta respuesta, y me pregunto como hacer el listview a pelo que cada item tenga una imagen y un texto, para que funcione en una activity.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 21:41:02 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007