Android|Android notifyDataSetChanged() 动态更新ListView案例详解

有时候我们需要修改已经生成的列表,添加或者修改数据,notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新刷新Activity,通知Activity更新ListView。今天的例子就是通过Handler AsyncTask两种方式来动态更新ListView。



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 Adapter; ArrayList arr=new ArrayList(); @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(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{@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))); }}; }

【Android|Android notifyDataSetChanged() 动态更新ListView案例详解】到此这篇关于Android notifyDataSetChanged() 动态更新ListView案例详解的文章就介绍到这了,更多相关Android notifyDataSetChanged()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读