BaseAdapter導致notifyDataSetChanged()無效的三個原因及解決方法:
數據源沒有改變:notifyDataSetChanged()只有在數據源改變時才會刷新列表,如果數據源沒有改變,調用該方法是無效的。解決方法是確保在調用notifyDataSetChanged()之前,數據源已經改變。
重寫getView()方法時沒有調用super.getView():如果在重寫getView()方法時沒有調用父類的getView()方法,那么即使調用了notifyDataSetChanged()也不會刷新列表。解決方法是在重寫getView()方法的開頭調用super.getView()。
對列表的增刪操作沒有通過Adapter的方法進行:如果在增加或刪除列表項時沒有使用Adapter提供的方法,而是直接修改了數據源,那么調用notifyDataSetChanged()也無效。解決方法是通過Adapter的方法來修改列表項,然后再調用notifyDataSetChanged()。
總結起來,解決BaseAdapter導致notifyDataSetChanged()無效的方法是:確保數據源已經改變、調用父類的getView()方法、使用Adapter的方法進行增刪操作。