RecyclerView实现的瀑布流如何防止在滑动过程中子View自动换位置?每次滑动的过程中,子View会互换位置,或者左右两列 互换位置,我把动画关闭之后还是会换,仅仅是没有动画了,有什么办法吗,公司的需求是让子View固定在一个位置,不能互换

解决方案 »

  1.   

    View的高度变了才会变位置。
      

  2.   

    应该是和我遇到的问题一样了,因为在onBindViewHolder()给item设置个随机的高度,滑动过程中一直走onBindViewHolder()方法在重新给item设置高度,所以才会换位置。
    定义一个集合存储高度
    private List<Integer> mHeights;
    在onBindViewHolder()中
    if (mHeights.size() <= position) {
                mHeights.add((int) (100 + Math.random() * 300));
      }
    StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams)holder.lay.getLayoutParams();
       layoutParams.height = mHeights.get(position);
       holder.lay.setLayoutParams(layoutParams);原址: http://www.jianshu.com/p/402466ae7b15
      

  3.   

    找了一天才在别人博客上找到了解决方案,希望能帮到你:
    http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/sinat_21693123/article/details/50317399
      

  4.   

    网址进不去?进得去的
    这个方法,有问题。是不会出现,位置互换,但是导致两边的数据位置换了。
    不会啊,我的完全没问题,再说的,position是由系统控制的,肯定不会错,应该是你其他代码错了,这是我的代码。
      

  5.   

    http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/sinat_21693123/article/details/50317399
    上述链接提供的方法,导致页面空白。有其他方法没?同求!
      

  6.   

    通过设置 RecyclerView.RecycledViewPool 对象池大小 防止过度的复用viewholder  这样就能规避这个问题,比如一页可以显示10个  pool可以设置为50 这样在滑动过程中 可以避免复用当前显示的viewhold 来规避当前有效的viewhold复用互换位置
    已通过这种方法解决问题