adapter.notifyDataSetChanged执行的时候没有执行getview,adapter内容改变了

哎,真难 2014-09-08 11:50:12
发现了一个奇怪的问题,adapter我改变了里面的内容,但是adapter.notifyDataSetChanged的时候却没有执行getview,不知道是我哪里写错了,求问
...全文
3952 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
dahai2070 2016-08-30
  • 打赏
  • 举报
回复
引用 29 楼 heaimnmn 的回复:
[quote=引用 28 楼 lionfresh 的回复:] [quote=引用 27 楼 heaimnmn 的回复:] 还是自己解决了,哎,谢谢大家帮助
说说是什么原因和解决方法啊,给大家分享下[/quote]由于线程阻塞了,不是所以感觉是执行了run没有执行getview,,,[/quote] 我也是遇到了,没有进入getview ,,,线程阻塞,,,这个怎么弄呢,,
白生清 2016-01-14
  • 打赏
  • 举报
回复
引用 29 楼 heaimnmn 的回复:
[quote=引用 28 楼 lionfresh 的回复:] [quote=引用 27 楼 heaimnmn 的回复:] 还是自己解决了,哎,谢谢大家帮助
说说是什么原因和解决方法啊,给大家分享下[/quote]由于线程阻塞了,不是所以感觉是执行了run没有执行getview,,,[/quote] 我也是做了个聊天界面,底部增加记录的时候,notifyDataSetChanged后getview,偶尔不会执行, 一开始还不知道,直到一台测试机特别卡,一发信息就卡死,才在这找到问题,也是线程阻塞了。
liyx2018 2015-08-28
  • 打赏
  • 举报
回复
我也遇到同样的问题,调用notifyDataSetChanged后并没有执行getview方法,楼主是怎么解决的
a601962168 2015-04-14
  • 打赏
  • 举报
回复
能不能告诉下具体怎么解决的
jayaaaiii 2014-12-20
  • 打赏
  • 举报
回复
楼主能说明白点吗?
jayaaaiii 2014-12-20
  • 打赏
  • 举报
回复
我明显设置了,并且单步调试也走到了. 就是不走getView if (adapter !=null) { adapter.addItem(GlobalModels.roomList.getRoomList()); adapter.notifyDataSetChanged(); }
hoew 2014-12-04
  • 打赏
  • 举报
回复
我也遇到这个问题了。 不过我的原因是,因为加载数据的时候,显示的是一个LoadingView,加载完后,才显示ListView 我在显示LoadingView的时候调用adapter.notifyDataSetChanged就不会触发,原因大家懂得
lionfresh 2014-09-11
  • 打赏
  • 举报
回复
引用 27 楼 heaimnmn 的回复:
还是自己解决了,哎,谢谢大家帮助
说说是什么原因和解决方法啊,给大家分享下
哎,真难 2014-09-11
  • 打赏
  • 举报
回复
引用 28 楼 lionfresh 的回复:
[quote=引用 27 楼 heaimnmn 的回复:] 还是自己解决了,哎,谢谢大家帮助
说说是什么原因和解决方法啊,给大家分享下[/quote]由于线程阻塞了,不是所以感觉是执行了run没有执行getview,,,
哎,真难 2014-09-10
  • 打赏
  • 举报
回复
引用 23 楼 lionfresh 的回复:
引用 21 楼 heaimnmn 的回复:
[quote=引用 6 楼 lionfresh 的回复:] 是没有执行getView,还是执行了,界面没有刷新?
引用 11 楼 lionfresh 的回复:
[quote=引用 10 楼 heaimnmn 的回复:] [quote=引用 6 楼 lionfresh 的回复:] 是没有执行getView,还是执行了,界面没有刷新?
这明显说了没有执行
看看代码吧,还没遇到过你说的情况[/quote] private Runnable runnable = new Runnable( ) { public void run ( ) { movies = getMyApp().getDownloadItems();//获取全局变量数据 if(movies != null) { if(adapter != null) { adapter.setMovies(movies); adapter.notifyDataSetChanged(); }else { adapter = new DownloadAdapter(getmContext(), listView, movies); } } handler.postDelayed(this,1500); } }; 情况这样,下载的时候会时时刷新,getview,下载好了以后就不会走getview了,这让我很蛋疼了,下载好不getview,就存在问题,当重新走生命周期的时候,listview不走getview,listview就为空,就不会显示了[/quote] 你movies为空时就不走下面的逻辑了,adapter的相关操作就不执行了。[/quote]movies不可能为空,因为这是全局变量,并且有值,但是就是不走getview
lionfresh 2014-09-10
  • 打赏
  • 举报
回复
引用 21 楼 heaimnmn 的回复:
引用 6 楼 lionfresh 的回复:
是没有执行getView,还是执行了,界面没有刷新?
引用 11 楼 lionfresh 的回复:
[quote=引用 10 楼 heaimnmn 的回复:] [quote=引用 6 楼 lionfresh 的回复:] 是没有执行getView,还是执行了,界面没有刷新?
这明显说了没有执行
看看代码吧,还没遇到过你说的情况[/quote] private Runnable runnable = new Runnable( ) { public void run ( ) { movies = getMyApp().getDownloadItems();//获取全局变量数据 if(movies != null) { if(adapter != null) { adapter.setMovies(movies); adapter.notifyDataSetChanged(); }else { adapter = new DownloadAdapter(getmContext(), listView, movies); } } handler.postDelayed(this,1500); } }; 情况这样,下载的时候会时时刷新,getview,下载好了以后就不会走getview了,这让我很蛋疼了,下载好不getview,就存在问题,当重新走生命周期的时候,listview不走getview,listview就为空,就不会显示了[/quote] 你movies为空时就不走下面的逻辑了,adapter的相关操作就不执行了。
哎,真难 2014-09-10
  • 打赏
  • 举报
回复
引用 7 楼 hjywyj 的回复:
最外层加个try catch 没报错??? 代码贴出来看看
private Runnable runnable = new Runnable( ) { public void run ( ) { movies = getMyApp().getDownloadItems();//获取全局变量数据 if(movies != null) { if(adapter != null) { adapter.setMovies(movies); adapter.notifyDataSetChanged(); }else { adapter = new DownloadAdapter(getmContext(), listView, movies); } } handler.postDelayed(this,1500); } }; 情况这样,下载的时候会时时刷新,getview,下载好了以后就不会走getview了,这让我很蛋疼了,下载好不getview,就存在问题,当重新走生命周期的时候,listview不走getview,listview就为空,就不会显示了
哎,真难 2014-09-10
  • 打赏
  • 举报
回复
引用 6 楼 lionfresh 的回复:
是没有执行getView,还是执行了,界面没有刷新?
引用 11 楼 lionfresh 的回复:
引用 10 楼 heaimnmn 的回复:
[quote=引用 6 楼 lionfresh 的回复:] 是没有执行getView,还是执行了,界面没有刷新?
这明显说了没有执行
看看代码吧,还没遇到过你说的情况[/quote] private Runnable runnable = new Runnable( ) { public void run ( ) { movies = getMyApp().getDownloadItems();//获取全局变量数据 if(movies != null) { if(adapter != null) { adapter.setMovies(movies); adapter.notifyDataSetChanged(); }else { adapter = new DownloadAdapter(getmContext(), listView, movies); } } handler.postDelayed(this,1500); } }; 情况这样,下载的时候会时时刷新,getview,下载好了以后就不会走getview了,这让我很蛋疼了,下载好不getview,就存在问题,当重新走生命周期的时候,listview不走getview,listview就为空,就不会显示了
荔枝别闹了 2014-09-10
  • 打赏
  • 举报
回复
我想成你要添加数据结果视view没更新了。。。
荔枝别闹了 2014-09-10
  • 打赏
  • 举报
回复
引用 18 楼 heaimnmn 的回复:
引用 17 楼 u012374885 的回复:
[quote=引用 16 楼 heaimnmn 的回复:] [quote=引用 15 楼 u012374885 的回复:] 你notifyDataSetChanged();之前,list.addAll(data);一下
我的adapter肯定不为空,一开始已经显示了,不能再add了
你不是改变数据了吗?如果不重新addall的话好像listview里存的还是之前的list的引用[/quote]你应该多练下adapter了,,,[/quote]
哎,真难 2014-09-10
  • 打赏
  • 举报
回复
引用 17 楼 u012374885 的回复:
引用 16 楼 heaimnmn 的回复:
[quote=引用 15 楼 u012374885 的回复:] 你notifyDataSetChanged();之前,list.addAll(data);一下
我的adapter肯定不为空,一开始已经显示了,不能再add了
你不是改变数据了吗?如果不重新addall的话好像listview里存的还是之前的list的引用[/quote]你应该多练下adapter了,,,
荔枝别闹了 2014-09-10
  • 打赏
  • 举报
回复
引用 16 楼 heaimnmn 的回复:
引用 15 楼 u012374885 的回复:
你notifyDataSetChanged();之前,list.addAll(data);一下
我的adapter肯定不为空,一开始已经显示了,不能再add了
你不是改变数据了吗?如果不重新addall的话好像listview里存的还是之前的list的引用
哎,真难 2014-09-10
  • 打赏
  • 举报
回复
引用 15 楼 u012374885 的回复:
你notifyDataSetChanged();之前,list.addAll(data);一下
我的adapter肯定不为空,一开始已经显示了,不能再add了
荔枝别闹了 2014-09-10
  • 打赏
  • 举报
回复
你notifyDataSetChanged();之前,list.addAll(data);一下
荔枝别闹了 2014-09-10
  • 打赏
  • 举报
回复
是不是初始化的时候adapter为空?我也遇到过这个问题
加载更多回复(16)

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧