发现了一个奇怪的问题,adapter我改变了里面的内容,但是adapter.notifyDataSetChanged的时候却没有执行getview,不知道是我哪里写错了,求问
|
4分 |
你的adapter 跟listView 绑定了吗?
或者绑定被错误置换了?
getView 是由 listView 调用的。
|
4分 |
缓存!!
|
|
应该不是缓存问题吧,,,
|
|
这之前绑定了,不然一开始也不会显示了
|
4分 |
不会是getcount返回0吧
|
4分 |
是没有执行getView,还是执行了,界面没有刷新?
|
5分 |
最外层加个try catch 没报错???
代码贴出来看看
|
4分 |
同问
|
4分 |
看刷新是在哪做的,我有次始终刷新不了,后来检查是在resume中取的是旧数据
|
|
这明显说了没有执行
|
4分 |
看看代码吧,还没遇到过你说的情况
|
|
最外层加个try catch 没报错???
代码贴出来看看
它不报错的,只是不执行getview,,,
|
|
自己调试下,看看到底有没有执行呀
|
|
是不是初始化的时候adapter为空?我也遇到过这个问题
|
4分 |
你notifyDataSetChanged();之前,list.addAll(data);一下
|
|
你notifyDataSetChanged();之前,list.addAll(data);一下
我的adapter肯定不为空,一开始已经显示了,不能再add了
|
3分 |
你notifyDataSetChanged();之前,list.addAll(data);一下
我的adapter肯定不为空,一开始已经显示了,不能再add了
你不是改变数据了吗?如果不重新addall的话好像listview里存的还是之前的list的引用
|
|
你notifyDataSetChanged();之前,list.addAll(data);一下
我的adapter肯定不为空,一开始已经显示了,不能再add了
你不是改变数据了吗?如果不重新addall的话好像listview里存的还是之前的list的引用
你应该多练下adapter了,,,
|
|
你notifyDataSetChanged();之前,list.addAll(data);一下
我的adapter肯定不为空,一开始已经显示了,不能再add了
你不是改变数据了吗?如果不重新addall的话好像listview里存的还是之前的list的引用
你应该多练下adapter了,,,
|
|
我想成你要添加数据结果视view没更新了。。。
|
|
是没有执行getView,还是执行了,界面没有刷新?
是没有执行getView,还是执行了,界面没有刷新?
这明显说了没有执行
看看代码吧,还没遇到过你说的情况
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就为空,就不会显示了
|
|
最外层加个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就为空,就不会显示了
|
|
是没有执行getView,还是执行了,界面没有刷新?
是没有执行getView,还是执行了,界面没有刷新?
这明显说了没有执行
看看代码吧,还没遇到过你说的情况
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就为空,就不会显示了
你movies为空时就不走下面的逻辑了,adapter的相关操作就不执行了。
|
|
是没有执行getView,还是执行了,界面没有刷新?
是没有执行getView,还是执行了,界面没有刷新?
这明显说了没有执行
看看代码吧,还没遇到过你说的情况
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就为空,就不会显示了
你movies为空时就不走下面的逻辑了,adapter的相关操作就不执行了。
movies不可能为空,因为这是全局变量,并且有值,但是就是不走getview
|
|
一般来说,如果数据源不变化的话,那么notifyDataSetChanged()也没有作用,当然数据变化了,view有显示的缓存,也不需要getview
|
|
看看 adapter 的代码
特别是 setMovies 跟 构造函数。
|
|
还是自己解决了,哎,谢谢大家帮助
|
|
还是自己解决了,哎,谢谢大家帮助
说说是什么原因和解决方法啊,给大家分享下
|
|
还是自己解决了,哎,谢谢大家帮助
说说是什么原因和解决方法啊,给大家分享下
由于线程阻塞了,不是所以感觉是执行了run没有执行getview,,,
|
|
我也遇到这个问题了。
不过我的原因是,因为加载数据的时候,显示的是一个LoadingView,加载完后,才显示ListView
我在显示LoadingView的时候调用adapter.notifyDataSetChanged就不会触发,原因大家懂得
|
|
我明显设置了,并且单步调试也走到了. 就是不走getView
if (adapter !=null) {
adapter.addItem(GlobalModels.roomList.getRoomList());
adapter.notifyDataSetChanged();
}
|
|
楼主能说明白点吗?
|
|
能不能告诉下具体怎么解决的
|