Czasami listView.getChildAt (indeks int) zwraca NULL (Android)

Mam listView z adapterem niestandardowym. Kiedy coś się dzieje (kliknięcie dziecka), wykonuję pewne obliczenia i modyfikuję widok dziecka. Jeśli jakiś warunek został spełniony, inne dziecko niezwiązane z klikniętym dzieckiem powinno zostać zmodyfikowane.

To czasami działa, ale czasami kończy się niepowodzeniem i DDMS mówi, że widok jest pusty ...

Pokażę ci kod:

<code>        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));
            }

        }
</code>

invalidaEste to widok, który chcę zmodyfikować. Gdyv ma wartość NULL Loguję indeks, aby sprawdzić, czy jest OK. Zawsze jest mniejszy lub równy niż listView.getCount ()

Dlaczego to się dzieje?

Więcej danych: Kod znajduje się wewnątrz onAnimationStart (animacja animacji) słuchacza AnimationListener.

questionAnswers(4)

yourAnswerToTheQuestion