RecyclerView小贴士

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

完结。

你可能感兴趣的:(RecyclerView小贴士)