listview调用notifyDataSetChanged数据更新,但是界面没有刷新

时间:2022-05-23 19:36:25
执行notifyDataSetChanged后,数据有重新加载,但是没有滑动到底部,需要手动滑到底部。
利用环信做聊天的功能,发送的时候正常,但是接受消息的时候就不行了

adapter1.notifyDataSetChanged();
Log.i("listener","刷新界面");

在notifyDataSetChanged后面写一个Log语句,发送的时候有打印,但是接受的时候就没有

求大神帮忙解决

7 个解决方案

#1


notifyDataSetChanged不会滚动到顶部或底部,如果你想重新回到初始,可以再次setadapter

#2


引用 1 楼 bdmh 的回复:
notifyDataSetChanged不会滚动到顶部或底部,如果你想重新回到初始,可以再次setadapter

可是我是在两个地方调用同一个notifyDataSetChanged的,点击发送的时候可以正常,在环信消息监听器中调用的话notifyDataSetChanged后面的Log语句都没有打印,这个就比较奇怪,是notifyDataSetChanged在执行停止了吗?可是没有报错

#3


引用 2 楼 qq_20298581 的回复:
Quote: 引用 1 楼 bdmh 的回复:

notifyDataSetChanged不会滚动到顶部或底部,如果你想重新回到初始,可以再次setadapter

可是我是在两个地方调用同一个notifyDataSetChanged的,点击发送的时候可以正常,在环信消息监听器中调用的话notifyDataSetChanged后面的Log语句都没有打印,这个就比较奇怪,是notifyDataSetChanged在执行停止了吗?可是没有报错

監聽器的線程是不是UI線程, 界面更新操作只能在UI線程執行

#4


引用 3 楼 a784063999 的回复:
Quote: 引用 2 楼 qq_20298581 的回复:

Quote: 引用 1 楼 bdmh 的回复:

notifyDataSetChanged不会滚动到顶部或底部,如果你想重新回到初始,可以再次setadapter

可是我是在两个地方调用同一个notifyDataSetChanged的,点击发送的时候可以正常,在环信消息监听器中调用的话notifyDataSetChanged后面的Log语句都没有打印,这个就比较奇怪,是notifyDataSetChanged在执行停止了吗?可是没有报错

監聽器的線程是不是UI線程, 界面更新操作只能在UI線程執行

就是这个问题,因为环信的回调监听是子线程

#5


引用 4 楼 qq_20298581 的回复:
Quote: 引用 3 楼 a784063999 的回复:

Quote: 引用 2 楼 qq_20298581 的回复:

Quote: 引用 1 楼 bdmh 的回复:

notifyDataSetChanged不会滚动到顶部或底部,如果你想重新回到初始,可以再次setadapter

可是我是在两个地方调用同一个notifyDataSetChanged的,点击发送的时候可以正常,在环信消息监听器中调用的话notifyDataSetChanged后面的Log语句都没有打印,这个就比较奇怪,是notifyDataSetChanged在执行停止了吗?可是没有报错

監聽器的線程是不是UI線程, 界面更新操作只能在UI線程執行

就是这个问题,因为环信的回调监听是子线程
那在UI線程創建Handler, 然後監聽線程用它來發消息或者用EventBus

#6


你解决了吗,我也遇到了这个问题

#7


引用 6 楼 Deamo_anny 的回复:
你解决了吗,我也遇到了这个问题

我刚刚解决类似的问题,出现的原因就是子线程中notifyDataSetChanged,所以需要handler和message进行UI更新

#1


notifyDataSetChanged不会滚动到顶部或底部,如果你想重新回到初始,可以再次setadapter

#2


引用 1 楼 bdmh 的回复:
notifyDataSetChanged不会滚动到顶部或底部,如果你想重新回到初始,可以再次setadapter

可是我是在两个地方调用同一个notifyDataSetChanged的,点击发送的时候可以正常,在环信消息监听器中调用的话notifyDataSetChanged后面的Log语句都没有打印,这个就比较奇怪,是notifyDataSetChanged在执行停止了吗?可是没有报错

#3


引用 2 楼 qq_20298581 的回复:
Quote: 引用 1 楼 bdmh 的回复:

notifyDataSetChanged不会滚动到顶部或底部,如果你想重新回到初始,可以再次setadapter

可是我是在两个地方调用同一个notifyDataSetChanged的,点击发送的时候可以正常,在环信消息监听器中调用的话notifyDataSetChanged后面的Log语句都没有打印,这个就比较奇怪,是notifyDataSetChanged在执行停止了吗?可是没有报错

監聽器的線程是不是UI線程, 界面更新操作只能在UI線程執行

#4


引用 3 楼 a784063999 的回复:
Quote: 引用 2 楼 qq_20298581 的回复:

Quote: 引用 1 楼 bdmh 的回复:

notifyDataSetChanged不会滚动到顶部或底部,如果你想重新回到初始,可以再次setadapter

可是我是在两个地方调用同一个notifyDataSetChanged的,点击发送的时候可以正常,在环信消息监听器中调用的话notifyDataSetChanged后面的Log语句都没有打印,这个就比较奇怪,是notifyDataSetChanged在执行停止了吗?可是没有报错

監聽器的線程是不是UI線程, 界面更新操作只能在UI線程執行

就是这个问题,因为环信的回调监听是子线程

#5


引用 4 楼 qq_20298581 的回复:
Quote: 引用 3 楼 a784063999 的回复:

Quote: 引用 2 楼 qq_20298581 的回复:

Quote: 引用 1 楼 bdmh 的回复:

notifyDataSetChanged不会滚动到顶部或底部,如果你想重新回到初始,可以再次setadapter

可是我是在两个地方调用同一个notifyDataSetChanged的,点击发送的时候可以正常,在环信消息监听器中调用的话notifyDataSetChanged后面的Log语句都没有打印,这个就比较奇怪,是notifyDataSetChanged在执行停止了吗?可是没有报错

監聽器的線程是不是UI線程, 界面更新操作只能在UI線程執行

就是这个问题,因为环信的回调监听是子线程
那在UI線程創建Handler, 然後監聽線程用它來發消息或者用EventBus

#6


你解决了吗,我也遇到了这个问题

#7


引用 6 楼 Deamo_anny 的回复:
你解决了吗,我也遇到了这个问题

我刚刚解决类似的问题,出现的原因就是子线程中notifyDataSetChanged,所以需要handler和message进行UI更新