我有一个带有自定义适配器的 listView 。当发生某些事情(在子视图中单击)时,我会进行一些计算并修改子视图。如果满足某些条件,则应修改与单击的子项无关的其他子项。
这有时有效,但有时失败,DDMS 说视图为空......
让我向您展示代码:
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));
}
}
无效埃斯特是我要修改的视图。
什么时候v 为空我记录索引以检查它是否正常。始终小于或等于 listView.getCount()
为什么会发生这种情况?
更多数据:该代码位于 AnimationListener 侦听器的 onAnimationStart(Animationanimation) 内部。
由于视图回收,listView.getChildAt()
只会返回它正在显示的位置的视图,也许还有一个。也许如果您分享更多代码,我们可以帮助您找出最好的解决问题的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)