我在ListView中有一堆物品。每個項目包含幾個可編輯的視圖。我想保存用戶對這些的更改。要保存的事件發生在某個項目失去焦點時。OnItemSelectedListener,ListView和物品回收
我目前看到2種方式:
View.OnFocusChangeListener() with onFocusChange(View v, boolean hasFocus)
這工作,但凌亂,因爲每個項目包含幾個可編輯的意見。當整個物品散焦時,我寧願保存。我迄今爲止的簡化嘗試只是複雜的事情。
如果有這將是完美的一個OnItemDeSelectedListener,但只有相反:
AdapterView.OnItemSelectedListener() with onItemSelected(AdapterView<?> adapterView, View view, int i, long l)
表面上這看起來不錯。我只是創建變量lastSelectedView,所以我知道最後選擇(取消選擇)的項目是什麼。 問題是ListView如何回收視圖。我相信不能保證適配器沒有回收lastSelectedView,並因此改變了它所包含的數據。這是一個合理的假設嗎?
有沒有一種合理的方法來解決OnItemSelectedListener的回收視圖問題?
你爲什麼要存儲最後修改的視圖而不是基礎模型?您應該在每次修改後更新列表視圖適配器中的數據。或者因爲您希望在項目焦點更改時執行此操作,請創建適配器所持數據類型的本地副本,但不要創建視圖。 – mpellegr
嗯......謝謝你。你幫我意識到我的錯誤。沒有OnItemDeSelectedListener的原因是因爲列表項(使用推薦的Adapter實現)在屏幕熄滅後立即被回收,無論項目是否仍被選中。 一旦我能夠滿足我的要求,我會發布我的解決方案 – Ian
我認爲沒有取消選擇的監聽者的原因是因爲沒有真正的處理多選和單選模式的選擇的一般方法。 – mpellegr