美文网首页
RecyclerView小贴士

RecyclerView小贴士

作者: 王玮123 | 来源:发表于2017-11-03 15:23 被阅读5次

    在我们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小贴士

          本文链接:https://www.haomeiwen.com/subject/svytmxtx.html