2011-10-20 36 views
0

我定義了一個XML佈局。在運行時我從xml佈局文件中獲取LinearLayout,我在運行時創建了一個ListView。在ListView中運行時我添加了很多RelativeLayouts,如圖#5所示RelativeLayout包含不同的其他UI組件,如TextView,ImageView等工作正常,但當用戶按下後退按鈕我保存ListView對象使用setter方法在bean中,當用戶來到活動時再次恢復我從getter方法獲取ListView並再次將其添加到我的LinearLayout,因爲我上面添加,但它給我例外作爲java.lang.IllegalStateException:指定的孩子已經有一個父母。您必須先調用子視圖的父視圖上的removeView()。在再次獲取ListView之前,我還嘗試使用MyLinearLayout.removeView(myListView)...。但問題相同。 。任何建議... enter image description here將ListView添加到LinearLayout

+1

這聽起來很錯誤。你正試圖保存一個列表,而不是數據。這可能容易出錯,並可能泄漏內存。我不明白爲什麼存儲數據不是一個選項... – Knickedi

+0

@Knickedi我同意你的泄漏內存問題。 。現在有一件事我無法直接保存ArrayList來存儲在SQLite.as中它的ArrayList是數據結構...所以你建議如何處理這個列表?謝謝 – aftab

+1

存儲數組數據大部分時間都是用多個表和外鍵關係解決的(這裏有足夠的材料)。如果你存儲的數組與你存儲的其他元素沒有任何關係,並且你真的想存儲這個數組,那麼我只能通過使用文本列和項目之間的分隔符來嘗試這些數據(當存儲時,字符串被解析讀)。 – Knickedi

回答

0

據我現在瞭解,你的問題是,當你恢復活動時,你從代碼建立一個新的ListView,而應用程序發現這個ListView。所以,你會得到一個錯誤,你首先需要將這個ListView清空,然後用所有的數據重新填充它。

要做到這一點,最好的辦法:

  • 在你的XML佈局添加ListView
  • 與「findViewById」
  • 在您的resume()方法來填充這個您的Activity類獲取這一觀點使用自己創建的Adapter和ArrayList或Collection中的數據列表
  • 當您鍵入要發送的新消息時,將其保存到此ArrayList或Collection並恢復您的活動或重新填充ListView。

但是,發佈一些代碼可能會更好,所以我們可以更好地幫助您。

親切的問候和祝你好運!

+0

沒有親愛的我的問題沒有關係,因爲你發佈上面..謝謝 – aftab