Tengo un listView con un adaptador personalizado. Cuando sucede algo (un clic en un niño) hago algunos cálculos y modifico la vista infantil. SI se ha cumplido alguna condición, se debe modificar otro hijo que no esté relacionado con el elemento secundario al que se hizo clic.A veces listView.getChildAt (índice int) devuelve NULL (Android)
Esto funciona a veces, pero a veces falla y las DDM dice que la vista es nula ...
Te voy a enseñar el código:
if(invalidaEste != -1)
{
try
{
View v = lv_data.getChildAt(invalidaEste);
if(v== null)
{
Log.e("MY_LOG", "SIZE " + lv_data.getCount());
Log.e("MY_LOG", "IS_NULL " + String.valueOf(invalidaEste));
}
if(invalidaEste >= lv_data.getFirstVisiblePosition() &&
invalidaEste <= lv_data.getLastVisiblePosition())
{
RelacionFacturaPago rpf = (RelacionFacturaPago)lv_data.getAdapter().getItem(invalidaEste);
TextView tv = (TextView)v.findViewById(R.id.tv_pendiente);
tv.setText(Formato.double2Screen(rpf.getPorPagar()));
}
}
catch (Exception e)
{
Log.e("MY_LOG", "FAIL");
Log.e("MY_LOG", String.valueOf(invalidaEste));
}
}
invalidaEste es la vista que yo quiero Modificar. Cuando v es nulo Registre el índice para comprobar si está correcto. Siempre es más pequeño o igual que listView.getCount()
¿Por qué ocurre esto?
Más datos: El código está dentro de onAnimationStart (animación de animación) de un oyente de AnimationListener.
¿el adaptador tiene valores 'nulos'? – zapl
posible duplicado de [ListView getChildAt devolver nulo para hijos visibles] (http://stackoverflow.com/questions/6766625/listview-getchildat-returning-null-for-visible-children) – rds