2013-03-04 45 views
1

在我的定義適配器爲我listview,我添加了一個動畫這樣的:滾動時調用getView。

 View lastAddedItem = parent.getChildAt(0); 
     if(lastAddedItem != null) { 
      Animation a = AnimationUtils.loadAnimation(c, R.anim.push); 
      lastAddedItem.startAnimation(a); 
     } 

本規範適用於動畫列表中的第0項。當我滾動列表的時候也應用這個動畫,當然滾動的時候列表必須再次呈現,但是有什麼方法可以防止這種情況?請記住,請記住,此代碼位於方法getView()

非常感謝!

+1

是否有一個原因,你不能只是檢查'位置== 0'? – Geobits 2013-03-04 14:16:32

+0

嗯,我不太確定你的意思是?我必須抓住一個特定的'View'來應用動畫。如果你可以發佈一個例子,那會很棒。 – 2013-03-04 14:18:17

+0

我沒有測試它,可能聽起來很樸素,但爲什麼你只是不在動畫之前放置一個布爾值,並讓它通過一次? – Rigotti 2013-03-04 14:20:15

回答

0

如果您希望它在第0項上運行動畫,您應該可以檢查getView()附帶的position變量。如果它是0,請在提供的View上運行動畫。

編輯:爲每條評論添加了一個布爾標誌。

boolean isFirstRun = true; 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    if(convertView == null) { 
     // init view 
     ... 
    } 
    // populate view 
    ... 

    if(position == 0 && isFirstRun) { 
     isFirstRun = false; 
     // do animation stuff to convertView 
     // this will be the 0th item 
     ... 
    } 
} 
+0

謝謝你。動畫看起來好一點,但是當我從底部到頂部的時候,列表中的第一項會有一個信息。而當列表視圖不可滾動時,項目將隨機生成動畫。 – 2013-03-04 14:26:37

+2

哦,我以爲你希望它在任何時候都能看到視圖。此外,您可以使用布爾值來修復它。一秒鐘更新代碼。 – Geobits 2013-03-04 14:28:30

+0

我想我們誤解了對方一點。我試圖只在添加一個項目時動畫「視圖」。不是當我滾動列表。感謝您一直以來的幫助! – 2013-03-04 14:37:50