Android原理问题,notifyDataSetChange()与数据源,跪求教做猿

时间:2022-07-29 22:44:47
在调用Badapter adapter = new Badapter(context,数据源)之后,数据源改变了,再调用notifyDataSetChange()刷新,但是我并没有给它我改变后的数据源,Badapter是怎么通过notifyDataSetChange(),获取我新的数据源再去刷新的?
(我是自学的Android所以我的Java复杂一点的东西都是从Android中了解的)

5 个解决方案

#1


notifyDataSetChange 是把listview里面的条目重新加载了一遍吧,相当于重新走了一遍getView()方法

#2


我觉得:
new Adapter的时候,传入了数据对象的地址,数据变化,但对象的地址不会变,而你调用notifyDataChanged方法,重新调用了getSize、getView方法,虽然你没有告诉它数据变了,但是它存储的是对象地址,根据地址获取到这个对象,所以重绘页面的时候是变化后的数据

#3


那能给一下Java代码的demo,大神~

#4


引用 2 楼 lizebin_bin 的回复:
我觉得:
new Adapter的时候,传入了数据对象的地址,数据变化,但对象的地址不会变,而你调用notifyDataChanged方法,重新调用了getSize、getView方法,虽然你没有告诉它数据变了,但是它存储的是对象地址,根据地址获取到这个对象,所以重绘页面的时候是变化后的数据


能给个Java的简单Demo示例吗?大神~我很多是从Android学到java的,所以不太熟悉java

#5


引用 4 楼 Bike_without_Wheels 的回复:
Quote: 引用 2 楼 lizebin_bin 的回复:

我觉得:
new Adapter的时候,传入了数据对象的地址,数据变化,但对象的地址不会变,而你调用notifyDataChanged方法,重新调用了getSize、getView方法,虽然你没有告诉它数据变了,但是它存储的是对象地址,根据地址获取到这个对象,所以重绘页面的时候是变化后的数据


能给个Java的简单Demo示例吗?大神~我很多是从Android学到java的,所以不太熟悉java


这个不就是设置适配器,然后改变数据,再notifyDataChanged吗,这个怎么写demo。。。。。
你可以打开调试模式,看数据对象的地址和数据内容的变化,可能会帮助你理解

#1


notifyDataSetChange 是把listview里面的条目重新加载了一遍吧,相当于重新走了一遍getView()方法

#2


我觉得:
new Adapter的时候,传入了数据对象的地址,数据变化,但对象的地址不会变,而你调用notifyDataChanged方法,重新调用了getSize、getView方法,虽然你没有告诉它数据变了,但是它存储的是对象地址,根据地址获取到这个对象,所以重绘页面的时候是变化后的数据

#3


那能给一下Java代码的demo,大神~

#4


引用 2 楼 lizebin_bin 的回复:
我觉得:
new Adapter的时候,传入了数据对象的地址,数据变化,但对象的地址不会变,而你调用notifyDataChanged方法,重新调用了getSize、getView方法,虽然你没有告诉它数据变了,但是它存储的是对象地址,根据地址获取到这个对象,所以重绘页面的时候是变化后的数据


能给个Java的简单Demo示例吗?大神~我很多是从Android学到java的,所以不太熟悉java

#5


引用 4 楼 Bike_without_Wheels 的回复:
Quote: 引用 2 楼 lizebin_bin 的回复:

我觉得:
new Adapter的时候,传入了数据对象的地址,数据变化,但对象的地址不会变,而你调用notifyDataChanged方法,重新调用了getSize、getView方法,虽然你没有告诉它数据变了,但是它存储的是对象地址,根据地址获取到这个对象,所以重绘页面的时候是变化后的数据


能给个Java的简单Demo示例吗?大神~我很多是从Android学到java的,所以不太熟悉java


这个不就是设置适配器,然后改变数据,再notifyDataChanged吗,这个怎么写demo。。。。。
你可以打开调试模式,看数据对象的地址和数据内容的变化,可能会帮助你理解