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

Imprimir ArrayList en ListView - Android

Buenas tardes compañeros, estoy haciendo una especie de agenda para controlar un poco arrays y la impresión por TextArea en Android y bueno, me he topado con un pequeño problema.

public class MainActivity extends ActionBarActivity {
    static ArrayList<Usuarios> ListaUsuarios = new ArrayList<>();

    public void AddOnClick(View v) {
    Intent i = new Intent(MainActivity.this, AddUser.class);
    startActivity(i);
}
    public void VerUsuarios () {
        ListView lv = (ListView) findViewById(R.id.AreaTexto);
        ArrayAdapter<Usuarios> adapterUser = new ArrayAdapter<>(this, android.R.layout.list_content, ListaUsuarios);
        lv.setAdapter(adapterUser);
    }
}

public class AddUser extends ActionBarActivity {
    public void GuardarOnClick(View v) {
        Usuarios newUser = new Usuarios();
        EditText CajaNombre = (EditText) findViewById(R.id.ED_NOMBRE);
        String nombre = CajaNombre.getText().toString();
        newUser.setNombre(nombre);
        EditText CajaNumero = (EditText) findViewById(R.id.ED_NUMERO);
        int Numero = Integer.parseInt(CajaNumero.getText().toString());
        newUser.setTLF(Numero);
        MainActivity.ListaUsuarios.add(newUser);
        for (int i=0; i<MainActivity.ListaUsuarios.size();i++) {
            String nombreU=MainActivity.ListaUsuarios.get(i).getNombre();
            System.out.println("Los nombres de usuarios son: "+nombreU);
        }
        finish();
    }
}

Cuando quiero mostrar los usuarios añadidos al array en el ListView...digamos que pasa de mi xD

¿Como se podría hacer?

0voto

CarmaZone comentado

Hola, ¿has probado a poner puntos de interrupción y depurar a ver si los datos llegan correctamente?

Tengo un ejemplo hecho en el cual hago un LitView pesonalizado al cual le paso un ArrayList, tal vez te sirve para ver como trabaja. https://github.com/CarmaZone/TestListViewPers

Aparte como consejo, declara el objeto como tipo List que es la clase padre y no veo por qué hacerlo static.
A nivel de clase lo declaras como:

List<Usuarios> listaUsuarios;

y luego dónde vayas a usarlo lo instancias:

listaUsuarios =  new ArrayList<>();

además, los nombre de variables, por nomenclatura Java, se empiezan con la 1º letra en minúscula y si está compuesto de varias palabras, la 1º de cada palabra en mayúscula. y quedaría listaUsuarios.
ListaUsuarios sería nomenclatura para nombrar una clase.

Salu2!!!

0voto

Gust4v0x comentado

No entiendo bien tu consulta, agregar los ítems de una colección a un ListView o a un Combo no tiene mayor misterio. Supongo que ésta no es tu duda.

Por otra parte, siempre es conveniente aplicar un desarrollo guiado por pruebas (TDD). Haciendo un trozo de código y probando. En Java puedes usar JUnit, así te cercioras de que los datos - en tu caso, están llegando correctamente al destino. Si no es así, lo podrás corregir.

Ésto es muy importante ya que a menudo si no hacemos ésto, cuando queramos hacer un debug de nuestra aplicación mas adelante, encontraremos muchísimos y no sabremos ni por dónde empezar.

Ya sabes, TDD ;)

2 Respuestas

0voto

arthur7257 Puntos140

En principio, hay varias cosas extrañas en tu código, pero específicamente para el problema de mostrar los items en el ListView, recuerda que tienes que agregar los items al Adaptador y no a la lista. El hecho de que esté inicializada con tu lista, no significa que cada vez que agregues items a la lista, se agregarán automáticamente al adaptador, a menos que tú implementes un adaptador que tenga esta funcionalidad.

1voto

Mogwai Puntos250

Tienes varias opciones :

  • Una es añadir los usuarios a la lista y luego volver a hacer esto (menos recomendable) :

    adapterUser = new ArrayAdapter<>(this, android.R.layout.list_content, ListaUsuarios);
    lv.setAdapter(adapterUser);

Es decir, volver a cargar el adapter con la lista con los usuarios nuevos.

-Otra (mas recomendable) es añadir el usuario al adapter y notificar el cambio con :
adapterUser.notifyDataSetChanged();

Si quieres que ademas la lista tambien tenga en cuenta el nuevo usuario, debes añadirlo tambien a dicha lista.

Espero que te ayude.
Un saludo!

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