Android编程实现动态更新ListView的方法
程序员文章站
2024-02-22 19:48:40
本文实例讲述了android编程实现动态更新listview的方法。分享给大家供大家参考,具体如下:
有时候我们需要修改已经生成的列表,添加或者修改数据,notifyda...
本文实例讲述了android编程实现动态更新listview的方法。分享给大家供大家参考,具体如下:
有时候我们需要修改已经生成的列表,添加或者修改数据,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; publicclass main extends activity { /** called when the activity is first created. */ listview lv; arrayadapter<string> adapter; arraylist<string> arr=new arraylist<string>(); @override publicvoid 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 publicvoid 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线程调用 returnnull; } @override protectedvoid onpostexecute(string result) { // todo auto-generated method stub super.onpostexecute(result); adapter.notifydatasetchanged(); //执行完毕,更新ui } } private onitemclicklistener lvlis=new onitemclicklistener(){ @override publicvoid onitemclick(adapterview<?> arg0, view arg1, int arg2, long arg3) { //点击条目时触发 //arg2即为点中项的位置 settitle(string.valueof(arr.get(arg2))); } }; }
更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android数据库操作技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。
上一篇: java实现短信通信的完整教程
下一篇: 冒泡排序算法原理及JAVA实现代码