¿Es siempre necesario el argumento textViewResourceId?
Al escribir mi propio adaptador que extiende la clase ArrayAdapter , me encontré con los diferentes constructores disponibles y me di cuenta de que todos requieren un parámetro textViewResourceId . Así que al principio, decidí que iba a alimentar mi clase de adaptador personalizado android.R.id.text1 :
MyAdapter adapter = new MyAdapter(this, R.layout.myRow, android.R.id.text1);
Sin embargo, más tarde durante mi desarrollo, decidí anular el método getView donde
- ¿Cómo anular el filtro en el ArrayAdapter de Android?
- Comportamiento personalizado de AutoCompleteTextView
- Cómo usar un ArrayAdapter en android de objetos personalizados
- OnItemClickListener usando ArrayAdapter para ListView
- CursorAdapter vs ArrayAdapter para un ListView
TextView label = (TextView) myRow.findViewById(android.R.id.text1); label.setText("Position #" + position);
Que funcionó bien. Pero entonces esta pregunta vino a mi mente: si estoy haciendo la lógica de cómo mostrar la fila, ¿es realmente necesario proporcionar un textViewResourceId al constructor cuando inicie mi adaptador personalizado? ¿O es que cuando reemplazas a getView , ese parámetro ya no es necesario? Si mi pensamiento es correcto, ¿cuál es la práctica común para instanciar el adaptador sabiendo que va a sobrepasar el comportamiento de visualización de todos modos?
- ArrayAdapter en Fragmento - Android
- Android notifyDataSetChanged
- Android: cómo agregar un método de clic de artículo a un ArrayAdapter
- Custom ArrayAdapter getView no se llama - ¿Por qué no?
- Clasificación de ArrayAdapter para Android
- ArrayAdapter - filtrado con múltiples términos de búsqueda
- ArrayAdapter.getPosition (item) Returns ¿Qué?
- Utilizar un ListAdapter para rellenar un LinearLayout dentro de un diseño ScrollView
Si está sobreescribiendo getView
no es necesario especificar un textViewResourceId
adecuado .. Puede pasar en 0. La única vez que el ArrayAdapter
trata de acceder a ese ID está dentro de getView
.. Ya que está sobreescribiendo getView
y proporcionar su propia vista textViewResourceId
nunca es Ya que la superclase espera una ID de vista … todavía necesitas pasar una ID de vista a la super llamada .. sin embargo, puede ser 0 puesto que nunca se utilizará
ArrayAdapter Fuente confirmando todo esto
Si no especifica un textViewResourceId
adecuado y no sobreescribe getView
.. getView
en el ArrayAdapter
asume que su vista completa es un TextView
.. Si su vista no es un TextView
.. terminará con fallos de un ClassCastException ..
No es necesario utilizar ningún tipo de compilación en el adaptador.
Usted puede extender el BaseAdapter y hacer sus propias reglas de qué mostrar, qué tipo de datos para celebrar etc …
De hecho, casi nunca he utilizado los adaptadores incorporados que android tiene fuera de la caja, porque usar el baseAdapter es muy fácil como es.
- Cambio de estilo TextView state_pressed / state_focused / state_selected
- Animación RecyclerView no funciona