2 wangjia921011 wangjia921011 于 2016.09.19 11:38 提问

android适配器ViewHolder中子控件修改属性必须定义成final类型 10C

我在getView()方法中写了viewholder子控件的点击事件,在点击事件里面操作viewholder子控件,修改其属性,这时候提示我必须将viewholder修改为final,可是如果修改为final,别处就会报错,于是,我又定义了一个viewholder2,将其定义成final的,把viewholder赋值给它.
现在遇到这样的问题,比如我刷新这个界面的时候,如果有新的数据添加上,那么原来子控件的位置不会随着它的item变化,意思就是说,以前viewholder中子控件的位置(position)是5的话,那么就算有1条新数据添加上,它的位置(position)还是5,并不会变成6,我想应该是这个final的原因,导致不会变化,应该怎么办,求解,急~~~

图片说明

2个回答

u012691505
u012691505   2016.09.19 12:53

一般提示定义为final,把变量改为全局的就行。

qq_24827089
qq_24827089   2016.09.19 14:25

你用的是ListView 的Adapter?adapter绑定数据是在getView()方法里,adapter调用notifyDataSetChanged()刷新数据会调用getView();重新绑定数据,在getItem()没试过刷新绑定数据。要不你试试在getView()里做数据绑定。

wangjia921011
wangjia921011 后面的代码我没有截图,数据绑定其实就是在getView里面写的,但是我想这个原因就是因为定义成了final的,所以会出现不刷新的问题
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片