關於列表視圖及其適配器有許多問題,但我很確定我正確使用它。不過,我現在有一個列表視圖不會(總是)在Android 4.0.3上正確更新(ICS,並且僅在某些特定佈局中)。Android 4.0.3 ICS ArrayAdapter notifyDataSetChanged不更新ListView
代碼:
在活動的OnCreate:
mListView = (ListView) findViewById(R.id.list);
mArrayAdapter = new CustomListAdapter(this, R.layout.row_layout);
// We update it manually, but leaving this default doesn't work either
mArrayAdapter.setNotifyOnChange(false);
mListView.setAdapter(mArrayAdapter);
從單獨的線程我收到,我有追加,替換,插入適配器的新數據。對於simplicitly我現在用的總使用明確的替代例如:
private void updateList() {
runOnUiThread(new Runnable() {
public void run() {
mArrayAdapter.clear();
for (CustomItem item: mLastReceivedItems) {
mArrayAdapter.add(item);
}
mArrayAdapter.notifyDataSetChanged();
}
});
}
當收到新的項目它們顯示在列表中,但如果沒有任何物品接收到更新。該視圖仍顯示適配器真空時的項目。
該代碼仍然適用於Android 2.3.7,我也無法在使用其他佈局時重現該代碼,但我無法看到可能存在的許多差異。
有沒有人找到任何佈局參數或適配器函數來解決此錯誤而不會損失太多性能?
private void updateList() {
runOnUiThread(new Runnable() {
public void run() {
mArrayAdapter.clear();
for (CustomItem item: mLastReceivedItems) {
mArrayAdapter.add(item);
}
mArrayAdapter.notifyDataSetChanged();
// FIXME: Temp fix for ICS:
mListView.setAdapter(mListView.getAdapter());
}
});
}
我:
responseRequester的類型和功能是什麼? –
只是任何類型的項目。這與適配器和列表視圖中使用哪種類型無關 – Huupke
我沒有問你是否相關。我在問什麼是它的類型和功能?它只是一個數據容器嗎?顯示其代碼 –