我有一個簡單的ListView支持我的ArrayAdapter,它每5秒左右更新一次新數據。每隔5秒鐘,我在我的ArrayAdapter上調用notifyDataSetChanged,導致ListView重新繪製新數據。所有這一切都很好,我每5秒鐘就能看到一次新的數據。帶有實時數據的Android ListView和EditTexts
但是,在我的ArrayAdapter的getView方法中,我正在給包含EditText的LinearLayout充氣。以下是我想要解決的問題:
- 用戶在某些輸入中的行和類型之一中選擇了EditText。
- 用戶將注意力集中在EditText上超過5秒鐘。
- notifyDataSetChanged在新數據到達陣列適配器時被調用。
- 用戶失去了對EditText的重點,因爲它已被重繪。 notifyDataSetChanged似乎導致所有ListView元素重繪。
什麼是允許用戶保持對這個EditText的焦點,但確保數據總是新鮮的最佳方式?
感謝,
肖恩
編寫自定義'BaseAdapter',提供實際(可用於內存,非空)視圖,選定的一個(如選擇哪個用戶並鍵入文本或當前聚焦)。要更新數據:在適配器中存儲描述數據的對象列表,然後拋出列表,如果可用視圖,則使用關聯(新)對象手動更新它(如'getView'方法中那樣)。這是一種模仿'notifyDataSetChanged' – 2012-04-24 02:08:02
嗨弗拉基米爾 - 感謝您的答覆。我應該在我的原始問題中真正地概述了這一點,但是如果可能的話,我寧願繼續使用notifyDataSetChanged。瀏覽ListView中的每一行並更新視圖,而不是依賴getView被調用,這不是一條我想立即下去的道路。由於我的數據集中的項目數量可能會發生變化,我不確定列表視圖迭代解決方案對我而言是否可行。非常感謝。 – seanoshea 2012-04-24 16:10:54
沒問題,你可以玩這些方法http://developer.android.com/reference/android/widget/AdapterView.html#getFirstVisiblePosition%28%29和http://developer.android.com/reference/android/ widget/AdapterView.html#getLastVisiblePosition%28 – 2012-04-25 00:11:30