首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

notifyDataSetChanged() 动态更新ListView 经过 Handler AsyncTask两种方式

2012-09-28 
notifyDataSetChanged() 动态更新ListView 通过 Handler AsyncTask两种方式http://www.pocketdigi.com/201

notifyDataSetChanged() 动态更新ListView 通过 Handler AsyncTask两种方式
http://www.pocketdigi.com/20100827/75.html

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



程序代码:
package com.pocketdigi; 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(){ @Overridepublic void run() {// TODO Auto-generated method stubarr.add("增加一项");//增加一项Adapter.notifyDataSetChanged();}       };    class editItem extends AsyncTask<String,Integer,String>{@Overrideprotected String doInBackground(bbcode_editor.textarea.insertAfterSelection(response.responseText);        Element.scrollTo(editor.bbcode_editor.textarea.element);}    });  }  new WeiboShare({share_buttons: $('share_weibo'), img_scope: $('blog_content')});       

热点排行