Tengo 4 TextViews
, 2 ImageViews
, 2 Buttons
y 2 widgets que forman parte de una definición de fila en ListView
. Los datos provienen de XML y un SimpleAdapter
. Para acceder a estos TextViews
implemento el ViewBinde
r en una clase personalizada y anulo el setViewValue
. Esto funciona y los dos TextViews
que deseo cambiar dinámicamente se manejan en el setViewValue
. Lo que me confunde es por qué mis otros dos TextViews no se pasan por setViewValue
. Lo digo basándome en establecer un punto de interrupción donde el hilo de ejecución solo ingresa dos veces. Esperaba verlo 4 o más veces?Mejor comprensión de la ViewBinder de SimpleAdapter
Aquí está el setViewValue
donde tengo un conjunto de puntos de interrupción.
@Override
public boolean setViewValue(View view, Object data, String text)
{
if(view.getId() == R.id.txtvw1)
{
//blah do some stuff
}
else if (view.getId() == R.id.txtvw2)
{
//Blah do some stuff
}
return true;
}
declaración XML de los TextViews
(1 muestra y 4 no lo hace):
<TextView
android:id="@+id/txtvw1"
android:layout_centerHorizontal="true"
android:layout_width="185dp"
android:layout_height="25dp"
android:textSize="20sp"
android:layout_marginTop="60dp"
android:gravity="center"
android:inputType="none"
android:text="@string/str_StaticA"
android:textColor="#C0F700" />
<TextView
android:id="@+id/txtvw4"
android:layout_alignParentLeft="true"
android:layout_marginLeft="35dp"
android:layout_width="95dp"
android:layout_height="50dp"
android:textSize="18dp"
android:layout_marginTop="110dp"
android:gravity="center"
android:inputType="none"
android:text="IMHO:"
android:textColor="#FFBA19" />
Así que en resumen ¿Por qué la ejecución introduzca la anulación sólo dos veces Y da la casualidad de ser la exacta dos quiero actualizar?
Bueno a través de la lectura adicional y el razonamiento deductivo han salido a la luz algunas informaciones más. En mi opinión, nunca Ver en el ListView
fila XML pasaría por el ViewBinder
pero que estaba equivocado! Por lo que puedo imaginar, adjunte el ViewBinder
al DataAdapter a través del setViewBinder
. Bien, dado que se le dice a DataAdapter qué vista (s) usar para poblar los datos, tiene sentido que solo se muestren los dos. Solo estaba revelando dos.
Aquí hay un fragmento en el que especifique las Vistas que participan en el proceso de poblamiento y pasarlos al constructor del adaptador de datos:
String[] from = new String[] {"txtvw_PrevLift", "txtvw_PrevReps", "ActuLiftPikr", "ActulRepsPikr" };
int[] to = {R.id.txtvw_PrevLift, R.id.txtvw_PrevReps, R.id.ActuLiftPikr, R.id.ActulRepsPikr };
LiftDataAdapter LiftDataAdapter = new LiftDataAdapter(this, LiftDataMaps, R.layout.liftdatalayout, from, to);
Si bien esto parece tener sentido que no sé que mi razonamiento deductivo es preciso. Se actualizará a medida que encuentre más información.
Roger al nombrar la clase y la variable de la misma manera. Estás en lo correcto y solo tecleé rápido para la publicación. En cuanto a la devolución verdadera, entiendo lo que dices SIEMPRE devuelve verdadero de setViewValue. Estoy mirando el enlace provisto ahora para encontrar una manera mejor de regresar de setViewValue, por lo que es preciso no solo codificado. – GPGVM
Tío que es increíble. No sabía que pudieras echarle un vistazo al código fuente así. Gracias doble. – GPGVM