在活動中,我從服務器檢索數據。有限數量的TableRow
包含預先在佈局xml文件中定義的更多視圖,全部設置爲android:visibility="gone"
。此外,在java類中有一個數組,其ID爲TableRow
。 對於每個輸入「數據輸入」,我填寫這樣的一個TableRow
,將其設置爲可見併爲其設置動畫(動畫是從任意選擇的垂直面「推入」)。作爲進一步的提示,這個問題稍後很重要,從服務器檢索的每個數據包都與一個月有關。爲動態視圖數設置動畫,然後將其設置爲不可見/不存在
每當獲得數據,我以下過程
- 與信息
- 對於每次執行步驟1的時間填寫該靜止無形
TableRow
秒,在一個布爾陣列的值設置爲true
- 通話
showAnimation()
- 因爲這是布爾數組中的真實的每個條目中,ID陣列中獲得
TableRow
索引i
,設置動畫,並設置能見度VISI ble
這工作正常。即使在啓動動畫之前設置了可見性,也無所謂,因爲這需要很少的時間,所以動畫已經開始在我們的眼中。
現在出現這個問題:相反的方式不起作用。讓我澄清一下:我想,TableRow
被推出窗口,然後設置爲不可見的響應。每當我改變實際的月份時就消失了,並且新的條目被推入然後進入。問題是,動畫一開始,View
被設置爲不可見/消失。我試圖通過AnimationListener
解決這個問題,就像在第一個答案中解釋爲here一樣。這導致兩種可能的方式:
- 定義每個
TableRow
這樣的AnimationListener
並設置在onAnimationEnd()
知名度。我覺得這很醜陋,因爲它不是動態的。 - 有權訪問
AnimationListener
中的某種索引,並將每個TableRow
的動畫設置爲相同的偵聽器。 這裏我不知道怎麼可能解決這個。正如我之前發現的,在循環中設置動畫View
(在我的情況下爲循環)會導致循環結束時啓動動畫,而不是每當它設置時都會啓動動畫。因此,即使我將在onAnimationEnd()
中使用的for循環中攜帶全局索引變量,它顯然也不會有任何結果。
有人知道更好的實現方法嗎?用Handler.postDelayed()
解決這個問題並不能解決問題,因爲新數據可能已經來自服務器,因此新條目已經可見(因此新條目被設置爲不可見)。
而我我想在這裏給你一個很好的答案。告訴我一些事情,你爲什麼使用Table和TableRows而不是List和一個適配器? – Budius 2013-04-23 15:30:06
因爲我在使用表格設計問題時感覺更自由。 – 2013-04-23 15:39:39
它似乎是一個適配器是最適合來自服務器的可變數據。但是我可以看到一些表格特徵對於視覺部分可能是有趣的。 – Budius 2013-04-23 15:48:52