前言

recyclerview的使用不讲,此处只记录下问题,及解答

目录

viewHolder不予许在创建的时候添加到parent里

  1. 问题

    1
    ViewHolder views must not be attached when created. Ensure that you are not passing ‘true’ to the attachToRoot parameter of LayoutInflate
  2. 解析
    遇到这个问题,说明在onCreateViewHolder方法中inflate时有问题。
    首先了解下inflate方法中三个参数的意思

    1
    public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)

    第一个参数是传入的布局参数
    第二个参数是这个布局的父布局
    第三个就是是否要将这个布局加载到父布局里

    提示意思表示 viewHolder不予许在创建的时候添加到parent里
    在onCreateViewHolder中

    1
    2
    View view = inflater.inflate(R.layout.item_view, parent, true);或者
    View view = inflater.inflate(R.layout.item_view, parent);

    就会报错, 只要改成:

    1
    2
    View view = inflater.inflate(R.layout.item_view, null); 或者
    View view = inflater.inflate(R.layout.item_view, parent, false);

    即可

    RecyclerView的item不充满的整个宽度的

  3. 问题
    明明设置了match_parent布局,实际去不能充满。

  4. 解析
    一种情况,在adapter中加载inflater时parent传入为null

    1
    2
    view = View.inflate(mContext, R.layout.item,null); `
    return new ClassDayViewHolder(view);

    改成

    1
    view = LayoutInflater.from(mContext).inflate(R.layout.item_today_course,parent,false);

    另一种情况,在RecyclerView外随意加一层布局即可充满

setReverseLayout 和 setStackFromEnd 问题

这两个方法属于LayoutManager中的知识范围。

  1. setReverseLayout(true)

    • 作用:将数据从布局的底部从下往上排列。上滑加载后面的数据。页面定位在布局底部。
    • 实验:(屏幕内最多展示7个item)
      第一次加载 上滑加载
  2. setStackFromEnd(true)

    • 作用:从堆底部开始向上展示,数据逆序添加。页面定位布局底部。
    • 实验:
      第一次加载 上滑加载
  3. 图释 (条件:充满布局,分两种情况,数据是否超出屏幕展示数量)

    • 使用

      1
      layoutManager =new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, true);

    • 使用

      1
      2
      layoutManager =new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
      layoutManager.setStackFromEnd(true);

    • 使用

      1
      2
      layoutManager =new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, true);
      layoutManager.setStackFromEnd(true);