RecyclerView无法显示或是显示不全等原因

气死了,现在是凌晨3点,一直纠结一个东西到现在,就是RecyclerView。
这个真的是让我又爱又恨,看起来整洁,能在一边创建一边销毁,但是我恨的原因就是今晚本来能够两点睡的,就是因为适配器的原因,现在还没睡。

对,RecyclerView是需要我们自己去写适配器,将其他view适配到这上面。最开始的时候我就发现这个问题,那时候还好就是显示不全罢了,今晚测试一个数据显示,直接什么都不显示,或者只是在边边看到一点点,我真的很疑惑。
排查甚多原因,我还将项目重做,还好项目不太大,但是还是没有解决这个问题。
我百度了,很多人的回答是没有给RecyclerView设置布局管理器,也就是LayoutManager,但是其不然,虽然我一般是直接

recyclerview.setLayoutManager(new LinearLayoutManager(this));

但是也能看出来,我们是传进去了一个对象,没问题的。后来找了半天才发现是适配器的createview错误;也不能是错误吧,还是我不会写。
根据一位老哥的经验来说。
不要使用

View view=View.inflate(parent.getContext(),R.layout.cell_normal,null);

来创建view,这样的话
如果inflate(layoutId, root, false ) 则layoutId的最外层的控件的宽高是没有效果的。
如果inflate(layoutId, root, true ) 则layoutId的最外层控件的宽高能正常显示。
如果用上诉的代码的话,会发现item的宽度被判定为0,怪不得会不显示,宽度是0还怎么显示。
看效果
可以看出RecyclerView整整大一圈的,效果不佳

建议还是使用

LayoutInflater layoutInflater=LayoutInflater.from(parent.getContext());
        View view=layoutInflater.inflate(R.layout.cell_normal,parent,false);

//简单点写就是
View view1=LayoutInflater.from(parent.getContext()).inflate(R.layout.cell_card,parent,false);

效果如图
将RecyclerView整个填满了

好了好了,终于可以去睡觉了。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值