最近在学习Android的listView控件时遇到了一个问题,如何添加一个Item到ListView中并及时的刷新出来。在网上查了很多帖子,很多人在问,也很多人在解答,但是总的来说都没找到详细的解决方案。对于ListView与数据库的同步,高手们建议使用ContentProvider对象。但是如果我不使用数据库呢?也有人回答用notifyDataSetChanged()方法。这倒是一个正确的解决方案,但是对于新手来说,还是比较困惑怎么去用,这里我贴一下我的用法:

OnClickListener listener2 = new OnClickListener() {        @Override        public void onClick(View v) {            // TODO Auto-generated method stub            Map<String, Object> m = new HashMap<String, Object>();            String tiString  = tv.getText().toString(); // 注意这里我为什么要取出这个EditText的内容            m.put("prod_na", tiString); // 而不这样写 m.put("prod_na", tv.getText());            m.put("prod_type", tiString); // 因为tv.getText()返回的是Editable对象,真正的数据是被缓存的,                                          // 也就是说你后续的EditText改动都会影响之前添加的Item            coll.add(m);                        // 取回Adapter对象,用于调用notifyDataSetChanged方法。            SimpleAdapter sAdapter = (SimpleAdapter)lv.getAdapter();            sAdapter.notifyDataSetChanged();        }    };

这里涉及到了Android中的MVC模式概念,如何存储数据,控制和显示。

你可以认为ListView是一个View,那么mode是什么呢?显然是SimpleAdapter对象,而Control又是什么呢?那只能是notifyDataSetChanged()了。当数据变化时,也就是SimpleAdapter所处理的数据变化了,那么我们就需要调用notifyDataSetChanged 去通知View作出改变。

出自:http://www.cnblogs.com/moonz-wu/archive/2010/04/18/1714529.html

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. Android中HttpURLConnection使用详解
  5. android保存联系人到通讯录
  6. Android(安卓)使用Intent传递数据的实现思路与代码
  7. 浅析Android(安卓)MediaProvider之二
  8. 谈Android中对ListView,RecycleView应用的简化
  9. androidの获取天气预报JSON 实现

随机推荐

  1. 详解数据库多表连接查询的实现方法
  2. Centos7.3下mysql5.7安装配置教程
  3. 详解MySQL导出指定表中的数据的实例
  4. MySQL无法启动的解决办法
  5. MySQL curdate()函数的实例详解
  6. 详解java调用ffmpeg转换视频格式为flv
  7. MySQL5.5.27安装图文教程
  8. 基于Mysql的Sequence实现方法
  9. MySQL5.7免安装版配置图文教程
  10. 连接MySQL时出现1449与1045异常解决办法