0
我有這樣的代碼:爲什麼adapter.invalidate不強制重新繪製新列表?
if (mOffersList == null || index == 0) {
mOffersList = new ArrayList<Offer>();
}
try {
mOffersList
.addAll((Collection<? extends Offer>) gson
.fromJson(result, collectionType));
} catch (Exception e) {
// TODO: error in result: Nullable object must have
// a value.
}
if (mOffersList == null || mOffersList.size() == 0) {
errorMsg.setText("no offers found");
hadError = true;
} else {
if (mAdapter == null) {
mAdapter = new ImageAdapter(
OffersListActivity.this, mOffersList,
listType);
mListView.setAdapter(mAdapter);
}
mAdapter.notifyDataSetChanged();
// mListView.invalidate();
}
代碼貫穿 mOffersList = new ArrayList<Offer>();
然後加入新的元素(只有3項),然後mAdapter.notifyDataSetChanged();
但在我活動的老名單(20個項目)被顯示,而不是一個新的。
怎麼回事?
因爲你打電話後'mOffersList =新的',你創建的ArrayList的一個新的實例和適配器仍然有舊的 – Blackbelt
那麼我該如何更新其參考?請寫信作爲答案,我會給你投票 –