国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android編程實現動態更新ListView的方法

2020-04-11 10:50:52
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程實現動態更新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;publicclass main extends Activity {/** Called when the activity is first created. */   ListView lv;   ArrayAdapter<String> Adapter;   ArrayList<String> arr=new ArrayList<String>();   @Override publicvoid 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 publicvoid 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線程調用 returnnull;     }     @Override protectedvoid onPostExecute(String result) { // TODO Auto-generated method stub super.onPostExecute(result);       Adapter.notifyDataSetChanged(); //執行完畢,更新UI     }   } private OnItemClickListener lvLis=new OnItemClickListener(){     @Override publicvoid onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { //點擊條目時觸發 //arg2即為點中項的位置       setTitle(String.valueOf(arr.get(arg2)));     }   };}

更多關于Android相關內容感興趣的讀者可查看本站專題:《Android開發入門與進階教程》、《Android數據庫操作技巧總結》及《Android控件用法總結

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上犹县| 吴川市| 沙河市| 岫岩| 渝中区| 蒙山县| 满城县| 雷州市| 册亨县| 沽源县| 涞水县| 永仁县| 新邵县| 夏津县| 千阳县| 施甸县| 沙坪坝区| 阳春市| 色达县| 忻城县| 托克托县| 盐池县| 阿城市| 潼南县| 昌宁县| 天柱县| 凭祥市| 来凤县| 共和县| 晋城| 双城市| 云阳县| 永安市| 灌云县| 平谷区| 青川县| 麦盖提县| 清水河县| 镇赉县| 罗源县| 沾化县|