¿Cómo llenar un ListView con una ArrayList?
Mi aplicación de Android
necesita rellenar el ListView
utilizando los datos de un ArrayList
.
Tengo problemas para hacer esto. ¿Puede alguien por favor ayudarme con el código?
- Agregar un separador de fecha para un SimpleCursorAdapter en Android
- Android ListView resaltar varios elementos
- Android: casillas de verificación en un ListView (comportamiento extraño del elemento seleccionado)
- ListView de Android con casilla de verificación Eliminar / obtener ID de fila
- Android listview desaparece después de la rotación de la pantalla
- ¿Cómo puedo hacer que el pie de un ListView se estire para llenar el espacio restante?
- Al desplazar Custom ListView, el valor de la casilla de verificación cambia
- Array Index fuera de límite cuando se desplaza la vista de lista rápidamente mientras se actualizan los datos desde el servidor
- Cómo establecer el color de fila alternativo de Listview y el color de fondo del elemento seleccionado
- Referencia de diseño duplicada en la vista de lista
- Barra de desplazamiento personalizada de Android
- No se pueden obtener contactos con cuentas de gmail sincronizadas
- Cómo agregar un hijo a un padre particular en el listview expandible android
Debes hacerlo a través de un ArrayAdapter
que adaptará tu ArrayList (o cualquier otra colección) a tus artículos en tu diseño (ListView, Spinner, etc.).
Esto es lo que dice la guía para desarrolladores de Android :
Un
ListAdapter
que gestiona unListView
respaldado por una matriz de objetos arbitrarios. De forma predeterminada, esta clase espera que el identificador de recurso proporcionado haga referencia a una solaTextView
. Si desea utilizar un diseño más complejo, utilice los constructores que también toman un ID de campo. Ese identificador de campo debe hacer referencia a unTextView
en el recurso de diseño más grande.Sin embargo, se hace referencia a
TextView
, se llenará contoString()
de cada objeto de la matriz. Puede agregar listas o arreglos de objetos personalizados. Anule el métodotoString()
de sus objetos para determinar qué texto se mostrará para el elemento de la lista.Para usar algo que no sea
TextViews
para la visualización de matriz, por ejemploImageViews
, o para tener algunos datos además detoString()
resultados llenan las vistas, sobreescribengetView(int, View, ViewGroup)
para devolver el tipo de vista que desee.
Por lo tanto, su código debería tener el siguiente aspecto:
public class YourActivity extends Activity { private ListView lv; public void onCreate(Bundle saveInstanceState) { setContentView(R.layout.your_layout); lv = (ListView) findViewById(R.id.your_list_view_id); // Instanciating an array list (you don't need to do this, // you already have yours). List<String> your_array_list = new ArrayList<String>(); your_array_list.add("foo"); your_array_list.add("bar"); // This is the array adapter, it takes the context of the activity as a // first parameter, the type of list view as a second parameter and your // array as a third parameter. ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, your_array_list ); lv.setAdapter(arrayAdapter); } }
Tutorial paso a paso
También busque la interfaz de ArrayAdapter :
ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
Pruebe la siguiente respuesta para rellenar listview usando ArrayList
public class ExampleActivity extends Activity { ArrayList<String> movies; public void onCreate(Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.list); // Get the reference of movies ListView moviesList=(ListView)findViewById(R.id.listview); movies = new ArrayList<String>(); getMovies(); // Create The Adapter with passing ArrayList as 3rd parameter ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, movies); // Set The Adapter moviesList.setAdapter(arrayAdapter); // register onClickListener to handle click events on each item moviesList.setOnItemClickListener(new OnItemClickListener() { // argument position gives the index of item which is clicked public void onItemClick(AdapterView<?> arg0, View v,int position, long arg3) { String selectedmovie=movies.get(position); Toast.makeText(getApplicationContext(), "Movie Selected : "+selectedmovie, Toast.LENGTH_LONG).show(); } }); } void getmovies() { movies.add("X-Men"); movies.add("IRONMAN"); movies.add("SPIDY"); movies.add("NARNIA"); movies.add("LIONKING"); movies.add("AVENGERS"); } }
public class Example extends Activity { private ListView lv; ArrayList<String> arrlist=new ArrayList<String>(); //let me assume that you are putting the values in this arraylist //Now convert your arraylist to array //You will get an exmaple here //http://www.java-tips.org/java-se-tips/java.lang/how-to-convert-an-arraylist-into-an-array.html private String arr[]=convert(arrlist); @Override public void onCreate(Bundle bun) { super.onCreate(bun); setContentView(R.layout.main); lv=(ListView)findViewById(R.id.lv); lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , arr)); } }
- Agregar objeto a ArrayList en índice especificado
- Android: java.lang.SecurityException: Permiso Denial: inicio Intención