我爲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
被調用,但它只是..沒有明顯升級。
怎麼了?