notifyDataSetChanged() 动态更新ListView
有时候我们需要修改已经生成的列表,添加或者修改数据,notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新刷新Activity,通知Activity更新ListView。今天的例子就是通过Handler AsyncTask两种方式来动态更新ListView。
<?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>
<?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>();@Overridepublic 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(){@Overridepublic void run() {// TODO Auto-generated method stubarr.add("增加一项");//增加一项Adapter.notifyDataSetChanged(); } };class editItem extends AsyncTask<String,Integer,String>{@Overrideprotected 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; }@Overrideprotected void onPostExecute(String result) {// TODO Auto-generated method stubsuper.onPostExecute(result);Adapter.notifyDataSetChanged();//执行完毕,更新UI}}private OnItemClickListener lvLis=new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {//点击条目时触发//arg2即为点中项的位置setTitle(String.valueOf(arr.get(arg2)));}};}
notifyDataSetChanged() 动态更新ListView相关推荐
- android asynctask源码分析,Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)...
本文实例讲述了Android通过Handler与AsyncTask两种方式动态更新ListView的方法.分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,noti ...
- 一步步教你为网站开发Android客户端---HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新ListView...
本文面向Android初级开发者,有一定的Java和Android知识即可. 文章覆盖知识点:HttpWatch抓包,HttpClient模拟POST请求,Jsoup解析HTML代码,动态更新List ...
- Android中动态更新ListView
在使用ListView时,会遇到当ListView列表滑动到最底端时,添加新的列表项的问题,本文通过代码演示如何动态的添加新的列表项到ListView中. 实现步骤:调用ListView的setOnS ...
- 调用notifyDataSetChanged无法更新ListView
最近在开发一个应用程序的时候,用到了ListActivity来显示一些项.于是很自然的继承了ArrayAdapter类,来实现自己的Adapter. 代码大概的结构如下: public class M ...
- Android零基础入门第44节:ListView数据动态更新
2019独角兽企业重金招聘Python工程师标准>>> 经过前面几期的学习,关于ListView的一些基本用法大概学的差不多了,但是你可能发现了,所有ListView里面要填充的数据 ...
- 动态更新ViewPager?
本文翻译自:Update ViewPager dynamically? I can't update the content in ViewPager. 我无法更新ViewPager中的内容. Wha ...
- Android Studio App开发之循环试图RecyclerView,布局管理器LayoutManager、动态更新循环视图讲解及实战(附源码)
运行有问题或需要全部源码请点赞关注收藏后评论区留言~~~ 一.循环视图RecyclerView 尽管ListView和GridView分别实现了多行单列和多行多列的列表,使用也很简单,可是它们缺少变化 ...
- android 多数据图表,Android统计图表MPAndroidChart:为多条统计折线动态更新数据,以高温低温曲线为例【7】...
Android统计图表MPAndroidChart:为多条统计折线动态更新数据,以高温低温曲线为例[7] 本文在附录文章6的基础上,为Android统计图表MPAndroidChart的同一个L ...
- android 动态改变listview的内容
本文模拟:点击一个按钮,为已有的listview添加一行数据 <?xml version="1.0" encoding="utf-8"?> < ...
最新文章
- C/C++二级指针概念及应用(有向图的邻接表(拓扑排序)、有向网图的邻接表、树的孩子表示)
- flash h5录音_博乐h5网站建设案例-AI优网络
- Flutter 构建完整应用手册-动画
- 局域网伪造源地址DDoS***解决方法
- ccflow如何实现自由流程的?
- mysql截取栏目字符_substring从指定字符串开始截取(图)
- python 消息队列、异步分布式
- 操作系统学习---虚拟内存
- opencms使用笔记
- “互联网+”医疗服务
- Windows Kits(Windows 工具包)
- 上海伯俊软件科技有限公司面试题
- 学习笔记 c++ (简单的消息队列)
- Packetdrill(网络协议测试工具)
- oracle 关于小数点为小数的格式化
- 【6Dof位姿估计】DPVL:6DoF Object Pose Estimation via Differentiable Proxy Voting Loss论文理解
- 数据结构与算法_c#_猎豹网校
- Spring学习:一、Spring概述、Spring入门
- hnu 数字电路 实验4.4 RAM
- 关于c语言中如何四舍五入(圆整)的问题!