2012-12-17 13 views
0

我爲GridView使用自定義適配器,並向其提供我的自定義數據類的ArrayList。適配器「持有」以查看我的動畫時

這個想法是,當用戶按下(+)一個項目時,它的數量會增加,當他們按( - )時,它會下降。

這工作完美用下面的代碼:

活動:

//playerLayouts is the ArrayList of my Player class. 
playerLayouts.get(position).changeLife(-1); //All this does is decrement life by 1. 
adapter.notifyDataSetChanged(); 

適配器:

holder.textLife = (TextView) row.findViewById(R.id.player.text_life); 
... 
holder.textLife.setText(Integer.toString(player.life)); 

所以這偉大工程。我按加號,它上升,我按減,它下降。一切都很好。

但是,如果我想在視圖中放置一個小的「-1」彈出窗口,顯示1已被減去,並且對視圖進行動畫處理,則會出現問題。

... 
//textLifeChange is a different TextView in the layout. Also, I'm using NineOldAndroids. 
textLifeChange.setText(Integer.toString(player.lifeChange)); 
animate(holder.textLifeChange).setDuration(2000).alpha(0); //There are a few more animations in addition to this one. 

基本上,無論何時播放動畫(這是一個完整的兩秒鐘),視圖不會再做更新。例如,說「生命」= 20。我打( - ),現在它說19,而我的小彈出顯示「-1」並淡出。然後,僅僅一秒鐘後,我再次擊中(-1)。什麼都沒發生。 「生活」的TextView仍然說19,彈出窗口只是繼續播放其動畫,沒有任何變化。所以我等了一秒鐘,動畫就完成了。現在,如果我再次按( - ),它會再次正確更新。

有趣的是,如果我登錄我的setText方法,我看到更新了正確的號碼,並getView被調用,但它只是..沒有明顯升級。

怎麼了?

回答