关于listView无法刷新数据的问题
2017-02-01 21:43
302 查看
在Android中,listView 展示数据,是否出现过数据刷新了,但是listView却没有展示数据
//没有上整个demo,把关键代码上传上来
//没有上整个demo,把关键代码上传上来
private ListView mListView; private List<ContentItem> data; private BaseAdapter adapter; mListView = (ListView) findViewById(R.id.main_list_view); adapter = new MainAdapter(data,this); mListView.setAdapter(adapter);
刚开始,小编是这样写的,集合data是空的,在adapter中做为空判断,等我们刷新数据的时候,再初始化data,也就是先传入空数据,但是想法是这样的,就是刷新 不了数据。 小编仔细思考了这个问题,为什么数据来了,也就是data实例化了,里面有了数据,但是在adapter那边,data确实空的,这是为何。系统是不会给出错误的提示,不需要怀疑系统,应该怀疑代码,两边的data为何会不一样,因为两个data不是同一个data,在初始化adapter的时候,我们传入的是没有实例化的data,也就是在内存里面,根本就不存在data这片内存,这只是一个引用而已,换句话说,这里只是声明了一个对象,并没有实例一个对象。当我们刷新数据的时候,因为data是空的,我们需要实力对象,在内存里面开辟内存,然后添加数据,我们的想法应该就是,在adapter应该数据更新了,但是,我们想一想,在初始化的时候,根本就没有将内存地址传入过去,那边根本就没有内存地址,这个将声明的data实例化,adapter那边是不会知道的,adapter始终保持着一个空引用。可以这么理解,data实例化,adapter初始化没有指定地址,是无法指向data这个对象的。所以正确的写法是传入一个实例化好的对象,而不是一个null类型的数据,保证指向的是同一片内存。仅仅只需要添加一段关键代码
private ListView mListView; private List<ContentItem> data; private BaseAdapter adapter; mListView = (ListView) findViewById(R.id.main_list_view); //这句代码确保指向了同一片内存 data = new ArrayList(); adapter = new MainAdapter(data,this); mListView.setAdapter(adapter);
相关文章推荐
- Android;sql数据库:关于删除数据库数据无法刷新listview并且新listview的修改增加功能出现bug的问题
- 关于android的listview数据列表显示的下拉和刷新报错问题
- 关于ListView的数据刷新问题(notifyDataSetChange()方法的调用场景)
- 关于Child风格的CDialog上CListCtrl, 在CDialog最小化或者有窗口遮挡后CListCtrl无法刷新的问题
- 关于extjs中的tabpanel的刷新等若干问题,解决tabpanel内页面刷新,更新数据等问题。
- 关于通过GPS模块获取的坐标数据无法在Google地图上正确标记的问题说明
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于从GridView表中导出数据到Excel表中,身份证或者长度过长的数据在Excel中无法正常显示的问题
- 关于刷新html页面,数据重复提交的问题
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 【WEBAPI】关于WEBAPI无法获取数据的问题之一(Issues while making a POST to a Web API from JQuery)
- 关于JBPM4.4无法删除历史数据的问题
- 使用bindingsource数据绑定时datagridview单元格无法及时刷新的问题
- 关于ListView中notifyDataSetChanged()刷新数据不更新原因
- 关于通过GPS模块获取的坐标数据无法在Google地图上正确标记的问题说明
- 关于使用Silverlight Toolkit 3 中的主题后DataGrid无法呈现数据的问题
- 关于JQuery的clone方法无法拷贝data缓存数据的问题
- 关于ListView数据刷新的一些细节
- 关于 ListView 调用 notifyDataSetChanged 不刷新的问题