2011-11-01 72 views
2

即時通訊工作5.0與letter.my中的Listfield所有數據來自webservice並顯示它在listfield ..一切工作正常在第一時間解析時間和成功顯示在listfield ..如果在我第一次只有一個記錄顯示在行它工作正常,但我點擊我的NextButtonfield更新列表字段,我得到多個記錄和列表顯示我一個記錄..索引不更新在drawListRow方法

我調試很多,並得到有些問題.. drawListRow方法的索引不會遞增爲setSize(listItem.size());listItem是矢量,它成功更新取決於記錄。

那麼如何更新索引取決於向量大小?或者如何在更新時間刪除所有行?

回答

2

一些提示與一個ListField數據可能改變工作時,這將有助於您節省頭痛很多

  • 當使用共享對象(你Vector在這種情況下),以容納數據在兩者都被更新並被ListField使用的情況下,確保您同步任何代碼塊正在更新Vector。如果你不這樣做,你很可能會遇到IndexOutOfBounds異常,因爲ListField不知道Vector在更新時有多大。
  • 如果你顯示的內容很簡單,那麼更好的解決方案是擁有某種只有最低限度顯示行的bean。您可以在您的ListField中公開某些同步的setItems()調用,這些調用將通過Vector並存儲名稱(或您顯示的任何內容)並更新大小,以便無論您對Vector執行什麼操作, ListField將始終有良好的數據。

就你而言,你是正確的,你需要調用setSize(listItem.size());來更新列表中的項目數。如果你使用我的第二個建議,你可以做什麼來刪除所有內容,只需撥打list.setItems(new Vector());即可將大小設置爲0並清除存儲的項目。或者,簡單地調用list.setSize(0);將模擬列表爲空,因爲它不會認爲它有任何繪製,因此將顯示您的「空字符串」。

也可能是因爲您的drawListRow()方法存在問題,所以看起來好像沒有顯示多於一行的內容。如果您從中發佈代碼,我們可以查看它並讓您知道是否有任何潛在問題。

+0

感謝名單了很多@jprofitt。你的建議非常有幫助。 – Hitarth

0

實測值的溶液從this blog article

我發現了一個工作的解決方案是從它的管理器中刪除ListField控制,將其設置爲空和重新初始化它。

不是最好的解決方案,但目前它是爲我工作的唯一途徑:

Manager.delete(ListField); 
ListField = null; 
ListField = FillListWithItems(); 

Manager.add(ListField);