在我们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就不是很好找了,所以在开发的过程中就要注意这个小问题。
完结。