Android ListView 数据更新的总结

news/2024/7/7 12:19:25

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作出改变。


转载地址:http://blog.csdn.net/competerh_programing/article/details/7324016



http://www.niftyadmin.cn/n/3648999.html

相关文章

Android数据存储方式一:sharedprefrence存储,外部存储,内部存储

Android数据存储方式 SharedPrefrence存储 说明 SP存储专门用来存储一些单一的小数据 存储数据的类型: boolean, float, int, long, String 数据保存的路径: /data/data/packageName/shared_prefs/yyy.xml 可以设置数据只能是当前应用读取, 而别的应用不可以 应用卸载时…

Android中保存Activity的状态

1.onSaveInstanceState和onRestoreInstanceState基本作用onSaveInstanceState是用来保存UI状态的&#xff0c;你可以使用它保存你所想保存的东西&#xff0c;在Activity杀死之前&#xff0c;它一般在onStop或者onPause之前触发&#xff0c;onRestoreInstanceState则是在onResum…

如何在React App Server上渲染CSS

Server-side rendering can be challenging due to ambiguity. Open-source tools like Next.js (React) and Nuxt.js(Vue) help streamline the process of rendering your app views to a server. 由于含糊不清&#xff0c;服务器端渲染可能具有挑战性。 诸如Next.js (React…

Android存储方式二:sqlite数据库

说明 应用运行需要保存一系列有一定结构的数据, 比如说公司员工信息 文件类型: .db 数据保存的路径: /data/data/projectPackage/databases/xxx.db 默认情况下其它应用不能访问, 当前应用可以通过ContentProvider提供其它应用操作 应用卸载时会删除此数据 sqlite数据库 …

事件机制分发

相关API 1. MotionEvent : 触屏事件 int ACTION_DOWN0 : 代表down int ACTION_MOVE2 ; 代表move int ACTION_UP1 : 代表up getAction() : 得到事件类型值 getX() : 得到事件发生的x轴坐标(相对于当前视图) getRawX() :得到事件发生的x轴坐标(相对于屏幕左顶点) getY() …

Android TabActivity的生命周期

在TabActivity中&#xff0c;只在第一次进入时走了onCreate()、onStart()、onResume()三个阶段&#xff0c;然后在退出该页面时走了onPause()、onStop()和onDestroy()两个阶段。其他时间无论其中的子Activity如何切换&#xff0c;都不会再进入TabActivity的生命周期。 而子Acti…

three.js使用svg_如何使用SVG和anime.js构建弹性范围输入

three.js使用svg介绍 (Introduction) In HTML5, many new types of input attributes were introduced for the form element, such as color, date, range, and many more. Although functionally these new types of input works, they often do not meet the aesthetic need…

我们正处在IT殖民时代,需要突破的勇气,或者就这样继续下去...

IT殖民地&#xff0c;似乎有点危言耸听。但是从客观的事实来看&#xff0c;这个称呼并不离奇&#xff0c;尤其在企业级市场上&#xff08;IT消费品市场还好些&#xff09;。我们的操作系统都是Windows、AIX、HP-UX、Solaris&#xff0c;Redhat Linux&#xff0c;SuSE Linux&…