首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Android 中ListView和GridView赋值错位

ListView和GridView多次调用getView的bug,导致赋值错位 最近总遇到写GridView适配器赋值时,最后一两个需定义其他图片时,赋图错误,原因就是适配器的getView多次调用,...一.ListView 1.原因 因为listView一般用的是wrap_content,高度不确定,导致系统需要不断地测量,也就多次调用onMeasure方法,所以就多次调用getView。...2.解决 很简单,把宽高写死即可(明确给个数字或者match_parent) 二.GridView 1.原因 不管高度和宽度写死与否都会多次调用getView,原因有待继续探索,。。。。...2.解决 无法阻止多次调用getView,只能在onMeasure调用getView的时候不要去对convertView做赋值的操作,只有当onLayout的时候再对ConvertView进行操作。...中对ConvertView的处理 @Override public View getView(int position, View convertView, ViewGroup parent) {

61141

listview加载性能优化之view的复用

一般我们都会给listview set一个adapter ,然后adapter里面初始化的方法就是 getview(),这个方法 简单说是这个意思,就是 你的listview有多少行,或者说count值是多少...,他就会走多少次getview().所以 优化listview的加载速度就要让convertView匹配列表类型,并最大程度上的重新使用convertView。...getview的加载方法一般有以下三种种方式: 最慢的加载方式是每一次都重新定义一个View载入布局,再加载数据 public View getView(int position, View convertView...); return item; } 正确的加载方式是当convertView不为空的时候直接重新使用convertView从而减少了很多不必要的View的创建,然后加载数据 public View getView...tag设置为ViewHolder,不为空时重新使用即可 public class ViewHolder { TextView txt; ImageView icon; } public View getView

31930

Android ListView优化之局部刷新(更新)(非notifyDataSetChanged)

这个方法的原理是利用观察者模式对我们的数据源进行监听,当我们的数据源发生变化的时候,会调用Adapter的getView()方法进行整个界面的刷新。...这样的话我们发现,getview()会调用多次,刷新了好多个不需要刷新的item,这样的话相对而言,降低了效率。但是,我们有的情况下是只需要对某个item的数据进行刷新就可以了。...()方法 这种方法是调用适配器对应的getView方法,用它里面的代码对界面进行刷新。...不可见的在滑动的时候getView会自动调用更新数据。最后要强调的一点就是关于布局优化,最好将item的高度设置为一个固定的值,这样能减少getView的调用次数。...因为一个不确定的值,ListView会频繁调用多次getView去确定其高度和渲染。

2K20

android 面试之listview

· 1.在adapter中的getView方法中尽量少使用逻辑· 2.尽最大可能避免GC· 3.滑动的时候不加载图片· 4.将ListView的scrollingCache和animateCache设置为...false· 5.item的布局层级越烧越好· 6.使用ViewHolder1.在adapter中的getView方法中尽量少使用逻辑不要在你的getView()中写过多的逻辑代码,我们可以将这些代码放在别的地方...,例如: public View getView(int position, View convertView, ViewGroup parent) { View item = mInflater.inflate...public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView...你可以检查一下:a) item布局的层级是否太深b) getView()方法中是否有大量对象存在c) ListView的布局属性3.加载图片如果你的ListView中需要显示从网络上下载的图片的话,我们不要在

71970

ListView通用泛型适配器

其中最难写的就是getView了,然后我们还对他进行了优化:通过写一个叫做ViewHolder的类,在里面放入对应的控件。 现在我们首先来说一下通用适配器和一般的适配器的区别和相同点: ?...这一步我们应该比较熟悉吧,我们以前是在getView中实现这一步的。 2)然后我们看下面的bind方法,他的参数有五个。其实有三个参数我们很熟悉,就是我们getView中的三个参数。...@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder...1.获取指定控件 public <T extends View T getView(int id){ T t = (T) mViews.get(id); if(t == null){...2.TextView控件输入数据 public ViewHolder setText(int id,CharSequence text){ View view = getView(id); if

30820
领券