气死了,现在是凌晨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还怎么显示。
看效果
建议还是使用
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);
效果如图
好了好了,终于可以去睡觉了。