
@OverrIDepublic RecyclerVIEw.VIEwHolder onCreateVIEwHolder(VIEwGroup vIEwGroup,int vIEwType) { if(vIEwType==TYPE_ITEM) { VIEw mVIEw = LayoutInflater.from(vIEwGroup.getContext()).inflate(R.layout.inflate_common_item,vIEwGroup,false); VIEwHolder vh = new VIEwHolder(mVIEw); return vh; } else { VIEw mVIEw = LayoutInflater.from(vIEwGroup.getContext()).inflate(R.layout.inflate_uncommon_item,false); VIEwHolderFooter vh = new VIEwHolderFooter(mVIEw); return vh; }} 所以我在我的列表中有10个项目,所以每个项目这个方法将被调用,并且每当一个新的VIEwHolder将被创建当然,它将有一次为每个视图,但现在我的问题是当我们使用ListVIEw和BaseAdapter与我们将VIEwHolder存储在标签中并使用它.我们不会为每个项目创建VIEwHolder.
@OverrIDe public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) { MyVIEwHolder mVIEwHolder; if(convertVIEw == null) { convertVIEw = inflater.inflate(R.layout.layout_List_item,null); mVIEwHolder = new MyVIEwHolder(); convertVIEw.setTag(mVIEwHolder); } else { mVIEwHolder = (MyVIEwHolder) convertVIEw.getTag(); } mVIEwHolder.tvTitle = detail(convertVIEw,R.ID.tvTitle,myList.get(position).getTitle()); mVIEwHolder.tvDesc = detail(convertVIEw,R.ID.tvDesc,myList.get(position).getDescription()); mVIEwHolder.ivIcon = detail(convertVIEw,R.ID.ivIcon,myList.get(position).getimgResID()); return convertVIEw; } 所以我们不会创建额外的观看者对象.请帮我理解利弊.
谢谢
解决方法 当没有RecyclerVIEw可以重用的现有视图持有者时,onCreateVIEwHolder仅创建一个新的视图持有者.所以,例如,如果您的RecyclerVIEw可以一次显示5个项目,它将创建5-6个VIEwHolders,然后自动重新使用它们,每次调用onBindVIEwHolder.它类似于ListVIEw中的代码(检查convertVIEw是否为null,如果没有,请从标签中抓取现有的VIEwHolder),但使用RecyclerVIEw,这一切都将自动完成.
我想这是使用RecyclerVIEw的专业人士之一 – 您不必担心像VIEwVIEw那样重用VIEwHolders. con Rec RecyclerVIEw是非常可定制的,但内置功能很少 – 与ListVIEw不同,它不是很可定制的,但内置了很多功能.
总结以上是内存溢出为你收集整理的Android RecyclerView.Adapter onCreateViewHolder()工作全部内容,希望文章能够帮你解决Android RecyclerView.Adapter onCreateViewHolder()工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)