編輯:Android開發教程
需要的功能很簡單,就是一個帶checkbox的列表,提交時需要知道用戶選擇了那些項目,如下圖:

使用SimpleAdapter作為數據適配器,重寫SimpleAdapter.ViewBinder的方法,這樣用比自定義Adapter要方便點,代碼如下
datas定義是private List<Map<String, Object>> datas=null;
其中讓Map中保存一項自我引用(my)綁定到checkBox
private Map<String, Object> populateMap(String lblNo,
Map<String, Object>... maps) {
Map<String, Object> map = null;
if (maps.length > 0) {
map = maps[0];
} else {
map = new HashMap<String, Object>();
}
map.put("lblNo", lblNo);
map.put("my", map);
map.put("checked", true);
return map;
}
private void bindAdapter(){
int[] to = new int[] { R.id.lblNo,R.id.ckbIt };
String[] from = new String[] { "lblNo","my"};
adapter = new SimpleAdapter(this, datas, R.layout.activity_post_list_item,
from, to);
// =======添加刪除事件=======
//  
後來發現是ckb在執行setChecked時會觸發OnCheckedChange處理程序,
而SimpleAdapter采用的也是控件重用機制,就是當列表往上下拖時,那些被拖出屏幕外的控件會重用(綁定新的數據,參考代碼裡給的那鏈接),由於使用了final在執行ckb.setChecked((Boolean)map.get("checked")); 觸發該控件的OnCheckedChange處理程序,而這個處理程序指向的數據項是前一次綁定的那行即前一次調用setViewValue傳入的數據,這樣就可能導致datas中的某個數據被意外修改,進而引起程序行為的不確定。
解決辦法就是在執行ckb.SetChecked時做個標記,而事件處理程序根據這個標記排除拖動列表產生消息。
Android UI設計與開發教程 引導界面(五)實現應用程序只啟動一次引導界面
這篇文章算是對整個引導界面開發專題的一個終結了吧,個人覺得大部分的引導界面基本上都是千篇一律 的,只要熟練掌握了一個,基本上也就沒什麼好說的了,要是在今後的開發中遇到了
Skyfire推出國際版Horizon Android移動浏覽器擴展
對於那些想要在Android設備上體驗Skyfire帶來的個性化互聯網體驗的人們來說,這裡有個好消息。在被Opera以1.55億美元收購之後,Skyfire發布了Hori
Android簡明開發教程三:第一個應用Hello World
在安裝後Android開發環境和創建好Android模擬器之後,就可以開始寫第一個Android應用“Hello,World”。後面的例子均 采用
在Android中開源類庫使用過程中兼容性等問題的討論
1、在Android4.0環境下編譯的actionbarsherlock、slidingmenu類庫,能不能在4.0以下的版本中使用相信很多人跟我一樣,都以為在低版本(如