Android中ListView動態新增刪除項

鴨脖發表於2012-07-18
首先是建立三個全域性變數:

SimpleAdapter listItemAdapter;  // ListView的介面卡
ArrayList<HashMap<String, Object>> listItem;  // ListView的資料來源,這裡是一個HashMap的列表
ListView myList;  // ListView控制元件

然後在Activity的onCreate函式中對變數進行初始化:

listItem = new ArrayList<HashMap<String, Object>>();
listItemAdapter = new SimpleAdapter(this, listItem, R.layout.mylayout, 
new String[]{"image", "title", "text"},
new int[]{R.id.ItemImage, R.id.ItemTitle, R.id.ItemText});
myList = (ListView)findViewById(R.id.TaxiList);
myList.setAdapter(listItemAdapter);

新增兩個私有的功能函式:
private void addItem()
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("image", R.drawable.icon);
map.put("title", "標題");
map.put("text", "要顯示的內容");
listItem.add(map);
listItemAdapter.notifyDataSetChanged();
}


private void deleteItem()
{
int size = listItem.size();
if( size > 0 )
{
listItem.remove(listItem.size() - 1);
listItemAdapter.notifyDataSetChanged();
}
}


另附上ListView的項自定義的Layout不再多說:
<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout   
android:id="@+id/RelativeLayout01"   
android:layout_width="fill_parent"   
xmlns:android="http://schemas.android.com/apk/res/android"   
android:layout_height="wrap_content"   
android:paddingBottom="4dip"   
android:paddingLeft="12dip"  
android:paddingRight="12dip">  
<ImageView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:src="@drawable/taxi1" 
android:id="@+id/ItemImage" 
android:paddingTop="4dip">
</ImageView>
<TextView 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:text="DaZhong Taxi Corporation" 
android:layout_toRightOf="@+id/ItemImage" 
android:id="@+id/ItemTitle" 
android:textSize="24dip"></TextView>
<TextView 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:text="Tel:021-67786874" 
android:id="@+id/ItemText" 
android:layout_below="@+id/ItemTitle" 
android:layout_toRightOf="@+id/ItemImage">
</TextView>
</RelativeLayout> 

相關文章