android ListView 数据更新的总结

简介:
 

1、android中ListView滚动刷新

 

在做ListView加载数据时如果数据量大的话会造成加载时间过长而卡屏,所以为了解决这个问题,查看了SDK,

在OnScrollListener中有两个方法

只要重写这两个方法就可以实现滚动加载,例如:

public void onScroll(AbsListView v, int firstVisibleItem,
   int visibleItemCount, int totalItemCount) {
  lastItem = firstVisibleItem + visibleItemCount - 1;
  if (adapter.count == lastItem) {
   adapter.count += 10;
   adapter.notifyDataSetChanged();
  }

 }

 public void onScrollStateChanged(AbsListView view, int scrollState) {
  // TODO Auto-generated method stub

  Log.i("onScrollStateChanged", "onScrollStateChanged");
 }

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/evy_gyw/archive/2011/01/05/6118196.aspx

 

 

2、Android中的ListView内容刷新问题

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

 

Java代码
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();          
  }      
  };  

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(); } };

 

 http://android.group.iteye.com/group/blog/774152

 

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

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

相关文章
|
API Android开发 开发者
Android UI设计: 什么是RecyclerView?为什么它比ListView更好?
Android UI设计: 什么是RecyclerView?为什么它比ListView更好?
268 2
|
5月前
|
数据库 Android开发
Android使用EditText+Listview实现搜索效果(使用room模糊查询)
本文介绍如何在Android中使用EditText与ListView实现搜索功能,并结合Room数据库完成模糊查询。主要内容包括:Room的模糊查询语句(使用`||`代替`+`号)、布局美化(如去除ListView分割线和EditText下划线)、EditText回车事件监听,以及查询逻辑代码示例。此外,还提供了相关扩展文章链接,帮助读者深入了解ListView优化、动态搜索及Room基础操作。
333 65
|
XML Java Android开发
Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)
Android Studio App入门之列表视图ListView的讲解及实战(附源码 超详细必看)
1181 1
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
219 2
|
前端开发 API Android开发
25. 【Android教程】列表控件 ListView
25. 【Android教程】列表控件 ListView
569 2
|
XML Java Android开发
如何美化android程序:自定义ListView背景
如何美化android程序:自定义ListView背景
139 2
|
XML 编解码 Java
Android控件之高级控件——ListView、cardView、屏幕适配
Android控件之高级控件——ListView、cardView、屏幕适配
182 0
|
XML Android开发 数据格式
安卓-无敌解决ListView添加标题头无法正常显示的问题(歪门邪道)
安卓-无敌解决ListView添加标题头无法正常显示的问题(歪门邪道)
139 0
|
Java Android开发
[笔记]Android 学习一之转场动画+ViewPager+ListView简单Demo
[笔记]Android 学习一之转场动画+ViewPager+ListView简单Demo
|
XML Java Android开发
Android优化版ListView(附源代码)
本文是博主对Adapter(适配器)的一些理解,为了加深对Adapter的理解以及记录自己的阶段学习而写,同时也适合初学者阅读,参考本条博客的逻辑进行学习。
190 0

热门文章

最新文章