美文网首页
RecyclerView遇到的问题

RecyclerView遇到的问题

作者: KyneMaster | 来源:发表于2020-03-18 17:28 被阅读0次

    title: RecyclerView遇到的问题
    date: 2020-03-18 15:39:47
    blog: www.gitkyne.com


    前言

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

    目录

    目录.jpg

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

    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方法中三个参数的意思

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

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

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

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

      就会报错, 只要改成:

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

      即可

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

    1. 问题
      明明设置了match_parent布局,实际去不能充满。
    2. 解析
      一种情况,在adapter中加载inflater时parent传入为null
      view = View.inflate(mContext, R.layout.item,null); `
      return new ClassDayViewHolder(view); 
      
      改成
      view = LayoutInflater.from(mContext).inflate(R.layout.item_today_course,parent,false);
      
      另一种情况,在RecyclerView外随意加一层布局即可充满

    setReverseLayout 和 setStackFromEnd 问题

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

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

    上滑加载

    1. setStackFromEnd(true)
      • 作用:从堆底部开始向上展示,数据逆序添加。页面定位布局底部。
      • 实验:
        第一次加载

    上滑加载

    1. 图释 (条件:充满布局,分两种情况,数据是否超出屏幕展示数量)
      • 使用
        layoutManager =new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, true);
        
    - 使用
        ```
        layoutManager =new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
        layoutManager.setStackFromEnd(true);
        ```
    
    - 使用
        ```
        layoutManager =new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, true);
        layoutManager.setStackFromEnd(true);
        ```
    

    相关文章

      网友评论

          本文标题:RecyclerView遇到的问题

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