有时listView.getChildAt(int index)返回NULL(Android)

Des*_*que 5 android view android-listview

我有一个带有自定义适配器的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));
            }

        }
Run Code Online (Sandbox Code Playgroud)

invalidaEste是我想要修改的视图.当v为null时,我记录索引以检查它是否正常.始终小于或等于listView.getCount()

为什么会这样?

更多数据:代码位于AnimationListener侦听器的onAnimationStart(动画动画)内.

dmo*_*mon 9

由于视图回收,listView.getChildAt()将仅返回其显示的位置的视图,并且可能还有一个.也许如果您分享更多代码,我们可以帮助您找出如何最好地解决问题.