2011-04-05 35 views
0

我試圖編寫單個活動應用程序,擴展ListActivity。我有一個類生成數據字符串數組。我想要的是定期刷新活動視圖,因此它將代表實際值。我製作了自己的適配器來擴展BaseAdapter。它在單行中包含2個TextView,用這些字符串數組進行膨脹。 當我使用setListAdapter(myAdapter)在onCreate中設置我的新適配器時,它工作正常。我只是不知道,我怎麼可以定期刷新視圖來表示在第一次通貨膨脹後myAdapter中使用的數組的實際值。我試圖在Thread.sleep()的幫助下定期在另一個線程中調用notifyDataSetChanged(),但那不起作用,因爲你不能從另一個線程調用notifyDataSetChanged()。 我是一個初學者和適配器的新手,已經閱讀了大量的例子,但我只是不知道。基於時間刷新視圖的內容在一個活動

回答

0

爲onCreate()中的活動創建一個新的Handler(),並向它發送一個調用notifyDataSetChanged()的Runnable。不管你喜歡,你都可以重新安排Runnable的時間間隔。

+0

thx求救!重複刷新工作在活動的類中創建處理程序,在onCreate之外創建一個刷新函數,並在其中發佈帶有notifyDataSetChanged()的runnable。之後它稱自己重複。現在它工作。但是它提出了一個問題,爲什麼我不能在runnable的run()函數中做一段時間(真正的)cicle以獲得週期性?爲什麼這不起作用?爲什麼我必須在一個單獨的函數中實現它,這個函數會一遍又一遍地遞歸調用它自己? – IBoS 2011-04-05 22:24:52

+0

您在Runnable中使用的代碼在UI線程上運行。這就是Handler的用途,可以將代碼從另一個線程發佈到UI線程(您只能從UI線程訪問UI元素)。你永遠不會想要在UI線程上執行一段時間(true)循環,因爲它會凍結你的應用程序。通過處理程序不斷重新調度Runnable允許UI線程保持對用戶輸入的響應。 – LeffelMania 2011-04-05 23:04:12

+0

哦,我想我明白了。非常感謝你! – IBoS 2011-04-06 00:39:51