1
我有時繼承了一些源代碼拋出該線路上一個ConcurrentModificationException的:ConcurrentModificationException的內部PublishResult - ArrayAdapter
for (String c : filteredList) {
體:
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
ArrayList<String> filteredList = (ArrayList<String>) results.values;
if (results != null && results.count > 0) {
clear();
for (String c : filteredList) {
add(c);
}
notifyDataSetChanged();
}
}
我應該如何避免這種錯誤的發生?
通常我只是直接使用過濾列表,而不是進一步的迭代。您可以隨時保留對過濾條件爲空/空時的完整列表的引用。 – Karakuri
無可否認,使用'ArrayAdapter'很難做到這一點,因爲它對項目的大部分處理都是內部的,並且對您不可用(並且API可惜沒有'setItems(列表)'方法,這確實是不幸的) 。我認爲你可以通過擴展BaseAdapter來簡化你的生活 - ArrayAdapter提供的東西很容易重新創建。 –
Karakuri
使用ArrayAdapter而不使用擴展BaseAdapter時,上述致命問題的熱修復會是什麼? –