ArrayAdapter en android para crear listview simple
He intentado crear una Activity
en Android, esta actividad sólo contiene un ListView
nada más.
Como sé que para llenar el listview necesitamos usar un ArrayAdapter
.
- Android Listview mantiene los elementos antiguos después de los cambios del adaptador
- Encabezados ListView sin separadores de elementos de lista
- Actualizar Android listview after scrollBy on
- OnContextItemSelected no parece ser llamado
- Cómo agregar encabezados de sección pegajosa en listview?
Así que para entender el ArrayAdapter He leído el siguiente enlace:
Http://developer.android.com/reference/android/widget/ArrayAdapter.html
¡Pero todavía no puedo comprenderlo claramente!
Una de las mayores dudas es por qué el constructor necesita un TextView
recursos TextView
mientras mi actividad no está teniendo TextViews lo que debería tener para darle?
No estoy hablando de que este es el único constructor, pero lo que intento explicar es que soy incapaz de entenderlo.
Para crear un listview simple también me referí al siguiente enlace:
Simple ListView utilizando el ejemplo de ArrayAdapter.
¿Pero otra vez mi duda principal es porqué necesita un identificador del recurso de TextView?
Si alguien puede explicarlo con el ejemplo, será de gran ayuda.
EDITAR:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values);
- ¿Hay una manera fácil de arrastrar elementos en un ListView para cambiar su orden?
- Cómo actualizar lista personalizada usando baseadapter en android
- Desplazarse a Cadena específica en el elemento de vista de lista personalizada
- SimpleCursorAdapter con Secciones en Android
- Establecer la casilla de verificación invisible a visible en la vista de lista
- Android: el evento onItemClick () de ListView no se llama
- ¿Hay una manera de desactivar / editar el desvanecimiento que una vista de lista tiene en sus bordes?
- ListView - ImageLoader mueve Lista / Elementos en Scroll up
ArrayAdapter utiliza un TextView para mostrar cada elemento dentro de él. Detrás de las escenas, utiliza el método toString()
de cada objeto que contiene y lo muestra en el TextView. ArrayAdapter tiene un número de constructores que se pueden utilizar y el que usted ha utilizado en su ejemplo es:
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
De forma predeterminada, ArrayAdapter utiliza el TextView predeterminado para mostrar cada elemento. Pero si lo desea, puede crear su propio TextView e implementar cualquier diseño complejo que desee extendiendo la clase TextView. Esto tendría que ir en el diseño para su uso. Puede hacer referencia a esto en el campo textViewResourceId para enlazar los objetos a esta vista en lugar del predeterminado.
Para su uso, sugeriría que utilice el constructor:
ArrayAdapter(Context context, int resource, T[] objects).
En su caso, esto sería:
ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values)
Y debería estar bien. Esto enlazará cada cadena con la pantalla de TextView predeterminada – fondo blanco sencillo y simple.
Así que para responder a su pregunta, usted no tiene que usar el textViewResourceId.
Pero de nuevo duda principal por qué TextView recurso id que necesita?
Observa el constructor y los parámetros.
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
Se agrega en el nivel 1 de la API Constructor
Parámetros
context
Elcontext
actual.
resource
El ID de recurso para un archivo de diseño que contiene un diseño que se usará al instanciar vistas.
textViewResourceId
El identificador del TextView dentro del recurso de diseño para ser objetos poblados Los objetos a representar en elListView
.
android.R.id.text1
refiere al id del texto en el recurso android. Así que no necesita tener uno en su actividad.
Aquí está la lista completa
http://developer.android.com/reference/android/R.id.html
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values);
this
refiere al contexto de la actividad
Android.R.layout.simple_list_item_1 simple_list_item_1 es el diseño en android.R.layout.
android.R.id.text1
refiere a la identificación del recurso android.
values
es una matriz de cadenas del enlace que proporcionaste
http://developer.android.com/reference/android/R.layout.html
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
También soy nuevo en Android, así que podría estar equivocado. Pero según mi comprensión mientras que usa esto para la creación del listview el 2do argumento es la disposición de artículos de la lista. Un diseño consiste en muchas vistas (vista de imagen, vista de texto, etc). Con el argumento 3 está especificando en qué vista o texto desea que se muestre el texto.
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
Aquí, resource significa el 'id' del Layout que está utilizando durante la instancia de la vista.
Ahora, este diseño tiene muchas vistas secundarias con sus propios identificadores. Por lo tanto, textViewResourceId
indica qué vista secundaria necesitamos rellenar con los datos.
No es necesario usar id para textview. Puede obtener más información acerca de arrayadapter android . El código siguiente inicializa el arrayadapter.
ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.single_item, eatables);
El identificador de recursos de TextView que necesita es para un archivo de diseño de TextView, por lo que no estará en la misma actividad.
Puede crearlo en Archivo> Nuevo> XML> Archivo de disposición XML, e ingrese el tipo de widget, que es "TextView" en el campo de etiqueta raíz.
Fuente: https://www.kompulsa.com/the-simplest-way-to-implement-an-android-listview/
- ¿Cómo puedo hacer que DrawerLayout se muestre debajo de la barra de herramientas?
- Android: html en textview con el enlace clickable