一般来说它工作正常.但是我希望控制视图(行)膨胀的方式.默认情况下,当行可见时,将调用适配器的getVIEw()方法.
这当然不是最好的行为之一,因为如果我有一个包含数百条记录的ListVIEw,并且我需要到达底部的那些,在滚动ListVIEw时,将为每一行调用getVIEw()方法,直到我到了页脚.
所以我想在滚动之后调用getVIEw并且ListVIEw处于暂停/空闲状态,但我不知道如何解决这个问题:
这是我开始的方式:
ListVIEw.setonScrollListener(new OnScrollListener() { @OverrIDe public voID onScrollStateChanged(AbsListVIEw vIEw,int scrollState) { if(scrollState==SCRolL_STATE_IDLE){ // Invoke get vIEw only on visible items } } @OverrIDe public voID onScroll(AbsListVIEw vIEw,int firstVisibleItem,int visibleItemCount,int totalitemCount) { }});
这是我的适配器的getVIEw:
@OverrIDepublic VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) { VIEwHolder holder; if (convertVIEw == null) { convertVIEw = mInflater.inflate(R.layout.row,parent,false); holder = new VIEwHolder(); holder.Title = (TextVIEw) convertVIEw.findVIEwByID(R.ID.textVIEw); holder.image = (ImageVIEw) convertVIEw.findVIEwByID(R.ID.imageVIEw); holder.position = position; convertVIEw.setTag(holder); } else { holder = (VIEwHolder) convertVIEw.getTag(); } holder.Title.setText(data.get(position).getTitle()); holder.image.setimageResource(R.drawable.ic_launcher); new LoadImageAsync(data.get(position).getUrl(),holder.image).execute(); return convertVIEw;}
请给我一些指示,看看我应该在哪里实现这一点:只在滚动后调用getVIEw(),并且仅针对可见项目.
解决方法 我最近读了一篇关于这个… here的文章.我没有尝试过,但它似乎是一个合理的理论.基本上,他们主张添加一个布尔值,用于跟踪是否滚动,并将其用作适配器中的标志.如果布尔值为true(您正在滚动),则只在您的布局中绘制textvIEws.如果为false(您已停止滚动),则绘制所有内容.
通过使用notifyDataSetChanged(),您告诉适配器在不滚动时重绘可见视图.
总结以上是内存溢出为你收集整理的Android – ListView – 按需调用getView()全部内容,希望文章能够帮你解决Android – ListView – 按需调用getView()所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)