`
android_madness
  • 浏览: 40537 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

(转)notifyDataSetChanged() 动态更新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;
  
 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)));
  
         }
  
     };
  
 }

分享到:
评论

相关推荐

    Android中ListView动态刷新

    总结,`notifyDataSetChanged()`是Android中更新ListView数据的关键方法,它使得开发者能够在程序运行时轻松地实现列表数据的动态刷新,提供了丰富的用户体验。但同时也需要注意性能优化,合理使用,以避免对应用...

    Android编程实现动态更新ListView的方法

    本文实例讲述了Android编程实现动态更新ListView的方法。分享给大家供大家参考,具体如下: 有时候我们需要修改已经生成的列表,添加或者修改数据,notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新...

    Listview不用notifydatasetchanged更新数据的方法

    Listview不用notifydatasetchanged更新数据的方法

    Android ListView动态查询更新代码

    在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。动态查询和更新ListView是...通过SearchListView这个例子,我们可以学习如何在ListView中实现高效的搜索和动态更新功能,提升应用的用户体验。

    自定义布局的动态加载listView

    5. 加载更多数据:在`onScrollStateChanged()`方法中,检查当前是否已到达列表底部,如果是,则向服务器请求更多数据,更新数据源,并调用Adapter的`notifyDataSetChanged()`方法通知ListView数据已更新。...

    ListView动态添加、移除item

    这样Adapter会自动重新加载数据并更新ListView。 三、动态移除item 1. 移除特定item时,首先从数据源中移除对应的对象,例如`myItemList.remove(index)`。 2. 同样,调用`notifyDataSetChanged()`让ListView知道...

    ListView动态加载

    **ListView动态加载** 动态加载,也称为懒加载,是为了提高应用性能和用户体验而采用的一种策略。在ListView中,不是一次性加载所有数据,而是只加载屏幕可见的部分,当用户滚动时,再按需加载更多数据。这样可以...

    android动态加载Listview

    5. **更新Adapter**:加载到新的数据后,将数据添加到原有数据列表,然后调用`notifyDataSetChanged()`通知ListView数据已更新。 6. **优化性能**:在`getView()`方法中进行视图复用(ViewHolder模式),减少视图...

    点击button动态加载listView

    此外,为了优化性能,你可以考虑使用异步加载数据(例如使用AsyncTask),并在数据加载完成后调用`adapter.notifyDataSetChanged()`通知ListView数据已更新。 总之,“点击button动态加载listView”是一种实用的...

    【 Android 】动态改变ListView

    当用户完成编辑并触发某个事件(如按钮点击)时,将EditText的文字和Bitmap图片组合成一个数据对象,然后添加到ListView的数据源中,最后调用`notifyDataSetChanged()`通知Adapter数据已更新,ListView会自动刷新...

    ListView动态更新item的例子

    本示例主要探讨如何实现ListView的动态更新,即在不重新加载整个列表的情况下,仅更新特定的item。这种优化对于提升用户体验至关重要,特别是处理大数据量时。 首先,我们需要了解ListView的工作原理。ListView通过...

    动态加载ListView的例子

    数据加载完成后,更新适配器的数据源,调用notifyDataSetChanged()通知ListView数据已改变,ListView会自动添加新的条目。如果数据加载失败或无更多数据,可以显示相应的提示。 此外,为了优化用户体验,我们还可以...

    Android 根据EditText搜索框 ListView动态显示数据

    然后清空adapter,添加过滤后的数据,并调用`notifyDataSetChanged`通知ListView数据已改变,从而实现动态更新。 这就是如何在Android中根据EditText搜索框动态显示ListView数据的基本步骤。使用SimpleAdapter可以...

    动态获取listView中的edittext的值

    3. **通知Adapter**:数据源修改后,调用Adapter的notifyDataSetChanged()方法,告诉ListView数据已改变,ListView会自动更新界面,删除对应的列表项。 在实际应用中,你还需要考虑一些细节,例如防止空指针异常、...

    动态添加、删除ListView列表项

    你可以通过调用Adapter的`add()`方法将新数据添加到数据源,然后调用`notifyDataSetChanged()`通知ListView数据已更新。 ```java adapter.addData(item); // 假设addData是自定义方法,将数据添加到数据源 ...

    无刷新更新listview

    无刷新更新ListView是一种提高用户体验的重要技术,特别是在处理大量数据或者实时动态更新的场景下。ListView是Android系统中常用的视图组件,它允许我们以列表的形式展示数据,而且可以通过滚动加载更多的内容。在...

    ListView的动态加载-很简单的Demo

    这个文件名暗示了这是一个关于ListView动态加载的完整项目,可能包括了主Activity、Adapter、数据模型类以及任何必要的布局文件。"Completion"可能指的是加载完成或者加载更多的事件处理。在解压后,开发者可以找到...

    ListView下拉更新功能

    当数据发生变化时,调用Adapter的`notifyDataSetChanged()`方法通知ListView数据已更新。 6. **错误处理**:在实际应用中,数据加载可能会出现异常,如网络问题。这时,需要在错误发生时停止刷新动画,并给出相应的...

    ListView中动态添加数据

    本篇文章将深入探讨如何在ListView中动态添加数据,这在实际应用中是非常常见且重要的功能。 首先,理解ListView的基本结构至关重要。ListView主要由Adapter驱动,Adapter就像一个桥梁,连接数据源(例如ArrayList...

Global site tag (gtag.js) - Google Analytics