有时候我们需要修改已经生成的列表,添加或者修改数据,notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新刷新Activity,通知Activity更新ListView。今天的例子就是通过Handler AsyncTask两种方式来动态更新ListView.从今天起,每次学习的源代码都会打包上传,方便各位同学学习,注册帐号即可下载。
布局main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView android:id="@+id/lv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>

ListView列表布局playlist.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@+id/text1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="30px"
android:textSize="18sp"
></TextView>

程序代码:

import java.util.ArrayList;

 import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener; public class main extends Activity {
/** Called when the activity is first created. */
ListView lv;
ArrayAdapter<String> Adapter;
ArrayList<String> arr=new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv=(ListView)findViewById(R.id.lv);
arr.add("123");
arr.add("234");
arr.add("345");
Adapter = new ArrayAdapter<String>(this,R.layout.playlist, arr);
lv.setAdapter(Adapter);
lv.setOnItemClickListener(lvLis);
editItem edit= new editItem();
edit.execute("0","第1项");//把第一项内容改为"第一项"
Handler handler=new Handler();
handler.postDelayed(add,3000);//延迟3秒执行
}
Runnable add=new Runnable(){ @Override
public void run() {
// TODO Auto-generated method stub
arr.add("增加一项");//增加一项
Adapter.notifyDataSetChanged();
}
};
class editItem extends AsyncTask<String,Integer,String>{
@Override
protected String doInBackground(String... params) {
arr.set(Integer.parseInt(params[0]),params[1]);
//params得到的是一个数组,params[0]在这里是"0",params[1]是"第1项"
//Adapter.notifyDataSetChanged();
//执行添加后不能调用 Adapter.notifyDataSetChanged()更新UI,因为与UI不是同线程
//下面的onPostExecute方法会在doBackground执行后由UI线程调用
return null;
} @Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Adapter.notifyDataSetChanged();
//执行完毕,更新UI
} }
private OnItemClickListener lvLis=new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//点击条目时触发
//arg2即为点中项的位置
setTitle(String.valueOf(arr.get(arg2))); } }; }

来源网址:http://www.pocketdigi.com/20100827/75.html

上面可以下载相应的源代码。。。

notifyDataSetChanged() 动态更新ListView的更多相关文章

  1. [转]notifyDataSetChanged() 动态更新ListView

    有时候我们需要修改已经生成的列表,添加或者修改数据,notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新刷新Activity,通知Activity更新ListView.今 ...

  2. Android中动态更新ListView(转)

    在使用ListView时,会遇到当ListView列表滑动到最底端时,添加新的列表项的问题,本文通过代码演示如何动态的添加新的列表项到ListView中.实现步骤:调用ListView的setOnSc ...

  3. 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView

    本文面向Android初级开发者,有一定的Java和Android知识即可. 文章覆盖知识点:HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新List ...

  4. Android ListView动态更新数据

    ListView就是可以显示一行行Item的控件,有时候数据非常多,通常需要分页显示,但为了减少用户的输入,我们可以动态更新ListView,把下一页要显示的数据的添加到当前ListView中. 先看 ...

  5. Android零基础入门第44节:ListView数据动态更新

    原文:Android零基础入门第44节:ListView数据动态更新 经过前面几期的学习,关于ListView的一些基本用法大概学的差不多了,但是你可能发现了,所有ListView里面要填充的数据都是 ...

  6. Android零基础入门第67节:RecyclerView数据动态更新

    列表的数据往往会跟随业务逻辑不断刷新,所呈现出来的数据需要动态更新,那么RecyclerView是如何动态更新数据的呢? 之前在学习ListView的时候如果数据改变,需要调用notifyDataSe ...

  7. android 动态改变listview的内容

    本文模拟:点击一个按钮,为已有的listview添加一行数据 <?xml version="1.0" encoding="utf-8"?> < ...

  8. 无刷新更新listview

    闲来无事,写点水文吧!有用得着的可以参考下,无刷新更新listview是什么意思呢?举个例子,在订单类listview列表中,常常会有各种订单状态,拿商城类app来说,会有待付款,待收货,确认收货等等 ...

  9. JQuery Mobile - 解决动态更新页面内容,CSS失效问题!

    今天编写JQuery Mobile程序,需要对数组数据动态创建,并且每条数据对应一个复选框,于是我很顺利写了一个Demo,当我运行时候发现,和我期望的不一样!复选框确实创建出来了,但是却没有CSS效果 ...

随机推荐

  1. Python基础笔记系列六:字典

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 字典字典的元素是由一对对键值对组成,每一对之间用逗号隔开,将所有的键值对用 ...

  2. Treflection06_调用静态方法

    1. package reflectionZ; import java.lang.reflect.Method; public class Treflection06 { public static ...

  3. ArcEngine 坐标系转换

    /// <summary> /// 地理坐标系 转 投影坐标系 /// </summary> /// <param name="x"></ ...

  4. DOM冒泡事件

    一.注册事件的三种方式 1 on的方式 语法: 事件源.on+事件名称 = 事件处理程序 例如: btn.onclick = function(){} 细节: 只能注册一个事件处理函数 兼容: 所有主 ...

  5. Django进阶Model篇001 - mysql 数据库的配置

    django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见: https://docs.djangop ...

  6. 【spark】连接Hbase

    0.我们有这样一个表,表名为Student 1.在Hbase中创建一个表 表明为student,列族为info 2.插入数据 我们这里采用put来插入数据 格式如下   put  ‘表命’,‘行键’, ...

  7. IIC时序图

  8. struts中操作request,session

    在Action类中操作request,session 方法一.利用ActionContext.getContext().get("request"); //返回的是Map集合 Ma ...

  9. Struts11---文件上传

    01.创建对应的上传页面 <body> <form action="user/upload" method="post" enctype=&q ...

  10. day13作业

    #作业1猜年龄 , 可以让用户最多猜三次! # Auther:bing #!/usr/bin/env python age = 24 print("猜年龄") for i in r ...