uzyskiwanie widoku dla elementu ListView / odwrotnej kolejności na 2.2; działa na 4.0.3

Mam ListView, który pokazuje elementy z ArrayAdapter. Chcę animować widok, gdy jest on zablokowany. Problem polega na tym, że na różnych wersjach Androida otrzymuję różne widoki (patrz poniżej)

Otrzymuję widok z ListActivity za pomocą tej metody:

private View getViewForListPosition(int position) {

    int firstPosition = mList.getFirstVisiblePosition() - mList.getHeaderViewsCount();
    int wantedChild = position - firstPosition;

    ZLog.d(LOG,"getViewForListPosition , position : " + position + ", wantedChild : " + wantedChild + ", view hash : " +mList.getChildAt(wantedChild).hashCode());

    for(int i = mList.getChildCount(); i>0; i--){
        ZLog.d(LOG, "pos : " + (i-1) + ", hash : " +mList.getChildAt(i-1).hashCode());
    }

    return mList.getChildAt(wantedChild);
}

Aby na telefonie z Androidem 4.0.3 i 4.2.2 uzyskać:

getViewForListPosition , position : 3, wantedChild : 3, view hash : 1101734248

pos : 5, hash : 1104109360
pos : 4, hash : 1104254936
pos : 3, hash : 1101734248
pos : 2, hash : 1104876880
pos : 1, hash : 1104862296
pos : 0, hash : 1104793008

następnie po kliknięciu elementu mój adaptergetView metoda działa dla każdego widoku:

getView, position : 0, convertView is notnull, cv hash1104793008
getView, position : 1, convertView is notnull, cv hash1104862296
getView, position : 2, convertView is notnull, cv hash1104876880
getView, position : 3, convertView is notnull, cv hash1101734248
getView, position : 4, convertView is notnull, cv hash1104254936
getView, position : 5, convertView is notnull, cv hash1104109360

więc możesz zobaczyć, że wszystko jest w porządku i działa zgodnie z oczekiwaniami. Jednak gdy uruchomię to na Androida 2.2, otrzymuję następujące wyniki:

getViewForListPosition , position : 3, wantedChild : 3, view hash : 1205607672

pos : 5, hash : 1205730120
pos : 4, hash : 1205712904
pos : 3, hash : 1205607672
pos : 2, hash : 1206547728
pos : 1, hash : 1206483960
pos : 0, hash : 1207864856

getView, position : 0, convertView is notnull, cv hash1205730120
getView, position : 1, convertView is notnull, cv hash1205712904
getView, position : 2, convertView is notnull, cv hash1205607672
getView, position : 3, convertView is notnull, cv hash1206547728
getView, position : 4, convertView is notnull, cv hash1206483960
getView, position : 5, convertView is notnull, cv hash1207864856

tak jak mogłeś zauważyćgetViewForListPosition wyświetli mi widok, którego adapter używa dla pozycji 2

Być może zauważyłeś, że alboAdapter.getView lubListView.getChildAt zwraca elementy w odwrotnej kolejności, co powoduje ten problem. Co może być powodem tego zachowania? (W moim adapterze nic nie robię)

Będę wdzięczny za każdą wskazówkę. Dzięki!

questionAnswers(1)

yourAnswerToTheQuestion