我一直在試圖理解BaseAdapter.hasStableIds()
是如何工作的。讓BaseAdapter.hasStableIds()返回真正解決什麼?
從我讀過的內容中,返回true
可以幫助適配器確定視圖是否必須重新創建或保持不變。我猜測適配器以某種方式將位置映射到一個id,並且如果映射保持不變,那麼調用notifyDataSetChanged()
時,適配器不執行任何操作。
但是,如果數據已更改,而id(和位置)保持不變,這不會是一個問題嗎?如果這確實是一個問題,那麼到底什麼時候才能真正恢復真正的幫助?
謝謝你的解釋。你可以看看這個:[Android - StableIDs是什麼意思?](http://stackoverflow.com/a/18217552/3954358)?那麼給定的答案是錯誤的? – Athena 2014-10-05 20:18:11
說實話,我不是100%確定的。特別是'ListView'是Android中最複雜的視圖類之一,它背後的代碼將需要相當長的時間來包裝頭部。我認爲在回收意見方面可能會有一些優化,但對我來說這似乎很奇怪; ListView應該爲每一行調用'getView()',然後在'notifyDataSetChanged'之後顯示每一行,以便填充每一行中的數據...... – Karakuri 2014-10-06 05:44:57
** ListView應該爲每一行調用getView()在notifyDataSetChanged後顯示反正**你是怎麼想的? – 2017-08-02 18:03:15