有时候我们需要修改已经生成的列表,添加或者修改数据,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相关推荐

  1. android asynctask源码分析,Android通过Handler与AsyncTask两种方式动态更新ListView(附源码)...

    本文实例讲述了Android通过Handler与AsyncTask两种方式动态更新ListView的方法.分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,noti ...

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

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

  3. Android中动态更新ListView

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

  4. 调用notifyDataSetChanged无法更新ListView

    最近在开发一个应用程序的时候,用到了ListActivity来显示一些项.于是很自然的继承了ArrayAdapter类,来实现自己的Adapter. 代码大概的结构如下: public class M ...

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

    2019独角兽企业重金招聘Python工程师标准>>> 经过前面几期的学习,关于ListView的一些基本用法大概学的差不多了,但是你可能发现了,所有ListView里面要填充的数据 ...

  6. 动态更新ViewPager?

    本文翻译自:Update ViewPager dynamically? I can't update the content in ViewPager. 我无法更新ViewPager中的内容. Wha ...

  7. Android Studio App开发之循环试图RecyclerView,布局管理器LayoutManager、动态更新循环视图讲解及实战(附源码)

    运行有问题或需要全部源码请点赞关注收藏后评论区留言~~~ 一.循环视图RecyclerView 尽管ListView和GridView分别实现了多行单列和多行多列的列表,使用也很简单,可是它们缺少变化 ...

  8. android 多数据图表,Android统计图表MPAndroidChart:为多条统计折线动态更新数据,以高温低温曲线为例【7】...

     Android统计图表MPAndroidChart:为多条统计折线动态更新数据,以高温低温曲线为例[7] 本文在附录文章6的基础上,为Android统计图表MPAndroidChart的同一个L ...

  9. android 动态改变listview的内容

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

最新文章

  1. C/C++二级指针概念及应用(有向图的邻接表(拓扑排序)、有向网图的邻接表、树的孩子表示)
  2. flash h5录音_博乐h5网站建设案例-AI优网络
  3. Flutter 构建完整应用手册-动画
  4. 局域网伪造源地址DDoS***解决方法
  5. ccflow如何实现自由流程的?
  6. mysql截取栏目字符_substring从指定字符串开始截取(图)
  7. python 消息队列、异步分布式
  8. 操作系统学习---虚拟内存
  9. opencms使用笔记
  10. “互联网+”医疗服务
  11. Windows Kits(Windows 工具包)
  12. 上海伯俊软件科技有限公司面试题
  13. 学习笔记 c++ (简单的消息队列)
  14. Packetdrill(网络协议测试工具)
  15. oracle 关于小数点为小数的格式化
  16. 【6Dof位姿估计】DPVL:6DoF Object Pose Estimation via Differentiable Proxy Voting Loss论文理解
  17. 数据结构与算法_c#_猎豹网校
  18. Spring学习:一、Spring概述、Spring入门
  19. hnu 数字电路 实验4.4 RAM
  20. 关于c语言中如何四舍五入(圆整)的问题!

热门文章

  1. 最全推荐系统Embedding召回算法总结
  2. 【java】本地客户端内嵌浏览器2 - chrome/chromium/cef/jcef
  3. Oracle数据库:实现批量插入的sql语句
  4. 一文看懂人工智能里的算法(4个特征+3个算法选择 Tips)
  5. 什么是分享经济?大众创业时代,最能赚钱的商业模式
  6. sanic web框架使用;sanic_jinja2模板使用
  7. js css鼠标经过下划线,Css、JS实现下划线动效
  8. observe数据代理
  9. SnailOS0.03是很傻很天真!
  10. 特征融合与灰色回归的滚动轴承性能退化评估