在我們bindData里面處理數據的時候一定要注意不要只是if沒有else,不然會出現recyclew展示item的時候有些item會出現展示問題。
舉個例子:
coder 1:
if (getItemViewType(position) == TYPE_BOOK && obj instanceof PhotoBookExtObj) {
try {
JSONObject jsonObject = new JSONObject(((PhotoBookExtObj) obj).getExtra());
int openBookType = jsonObject.getInt("themeId");
if (FastData.getBookIsSquar(openBookType)) {
holder.ivBookcover.setRatio(RatioFixMode.FIX_WIDTH, 1f, 1f);
} else {
holder.ivBookcover.setRatio(RatioFixMode.FIX_WIDTH, 18f, 25f);
}
} catch (JSONException e) {
Observable.error(e);
}
}
coder 2:
if (getItemViewType(position) == TYPE_BOOK && obj instanceof PhotoBookExtObj) {
try {
JSONObject jsonObject = new JSONObject(((PhotoBookExtObj) obj).getExtra());
int openBookType = jsonObject.getInt("themeId");
if (FastData.getBookIsSquar(openBookType)) {
holder.ivBookcover.setRatio(RatioFixMode.FIX_WIDTH, 1f, 1f);
} else {
holder.ivBookcover.setRatio(RatioFixMode.FIX_WIDTH, 18f, 25f);
}
} catch (JSONException e) {
Observable.error(e);
}
}else {
holder.ivBookcover.setRatio(RatioFixMode.FIX_WIDTH, 18f, 25f);
}
分析一下?
coder 1中沒有else,coder2中有else。會導致本來圖片的寬高比是18:25的現在展示成1:1的,所以這個問題雖然是小問題,但是當bindData中處理的代碼要是多了的話出了bug就不是很好找了,所以在開發的過程中就要注意這個小問題。
完結。