码迷,mamicode.com
首页 > 其他好文 > 详细

8-22发现的一点小问题(在“引用”上出的问题)

时间:2014-08-22 20:55:29      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:数据   ar   art   问题   cti   new   sp   ad   on   

今天写程序是发现了一点小纰漏:

程序的大体结构如下:

Public class act extends Activity {

//保存数据的list

Private ArrayList<T> listInAct = null;

Private ListView listView = null;

}

Public void onCreate(Bundle b){

listInAct = new ArrayList<T>();

.................................

MyBaseAdapter adapter = new MyBaseAdapter( this , listInAct );

listView .setAdapter( adapter );

 

}

这样把数据就加到了ListView中。

 

Public class MyBaseAdapter{

Private ArrayList<T> listInAdapter = null;

.......................................................

Public MyBaseAdapter( Context c , ArrayList<T> list){

this.listInAdapter = list;

........................................

}

}

 

接下来想实现这样的功能:ListView中要用的数据时存在数据库中的。 在另一个activity中向数据库中添加数据,当返回ListView所在的activity时 , ListView的内容要动态更新。

所以,我重写了 ListView 所在的activity的onStart()方法

Public void onStart(){

super.onStart();

listInAct = //从数据库中提取数据(返回一个 ArrayList<T>)。

adapter.notifyDataSetChanged();

}

但是,当时机运行时却发现:没用,ListView的内容死活不更新。

经过老师的指点,最后发现了问题所在。

问题分析过程:ListView没有更新的原因一定是notifyDataSetChanged()没有被调用。notifyDataSetChanged() 没被调用 一定是adapter中的数据:listInAdapter没有发生变化。Why listInAdapter not be changed ?

问题的根本原因是:当从新增的activity返回ListView所在的activity是。确实调用了onStart()方法, listInAct 确实被更新了。但是!!!,listInAct 被更新了不代表adapter中的 listInAdapter 也被更新了。当返回时。listInAct 被指向了另一个ArrayList<T>。但是listInAdapter 还是指向原有的 ArrayList<T>

 

 

修改方法:只需要改动Act的onStart ( ) :

private void onStart(){

 

listInAct 

}

Public void onStart(){

super.onStart();

listInAct.clear();

listInAct.addAll(dao.selectAllLinkMan());

adapter.notifyDataSetChanged();

}

经过这样的修改。listInAct 与 listInAdapter 始终是指向同一个ArrayList<T> 的。

listInAct 的内容变了也就定同于 listInAdapter 的内容变了。

至此:问题解决。

 

 

8-22发现的一点小问题(在“引用”上出的问题)

标签:数据   ar   art   问题   cti   new   sp   ad   on   

原文地址:http://www.cnblogs.com/qufanblog/p/3930146.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!