我有一个带有自定义BaseAdapter的ListVIEw.每个列表项都有一个可点击的按钮.
private List items = new ArrayList();
public VIEw getVIEw(final int position, VIEw convertVIEw, VIEwGroup parent) { VIEw v = null; try { v = inflater.inflate(R.layout.row, null); TextVIEw name = (TextVIEw)v.findVIEwByID(R.ID.textVIEw); name.setText(items.get(position).getname()); imagebutton = (Imagebutton) v.findVIEwByID(R.ID.button); imagebutton.setonClickListener(new OnClickListener() { @OverrIDe public voID onClick(VIEw v) { // do something } }); } catch (Exception e) { e.printstacktrace(); } return v; }
我的问题是当我滚动列表时应用程序冻结.
我该如何解决?
解决方法:
您每次都在创建一个新视图,这与ListvIEw的功能完全相反,它会重用视图.
删除VIEw v = null并使用传入的convertVIEw参数.
public VIEw getVIEw(final int position, VIEw convertVIEw, VIEwGroup parent) { if(convertVIEw == null){ convertVIEw = inflater.inflate(R.layout.row, null); } TextVIEw name = (TextVIEw)convertVIEw.findVIEwByID(R.ID.textVIEw); name.setText(items.get(position).getname()); imagebutton = (Imagebutton) convertVIEw.findVIEwByID(R.ID.button); /* NB For efficIEncy sake see the link in Sparky's answer about itemClickListeners instead of using onClickListeners */ imagebutton.setonClickListener(new OnClickListener() { @OverrIDe public voID onClick(VIEw v) { // do something } }); return convertVIEw;}
总结 以上是内存溢出为你收集整理的android – 如何停止冻结listView全部内容,希望文章能够帮你解决android – 如何停止冻结listView所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)