編輯: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設備上體驗Skyfire帶來的個性化互聯網體驗的人們來說,這裡有個好消息。在被Opera以1.55億美元收購之後,Skyfire發布了Hori
在安裝後Android開發環境和創建好Android模擬器之後,就可以開始寫第一個Android應用“Hello,World”。後面的例子均 采用
1、在Android4.0環境下編譯的actionbarsherlock、slidingmenu類庫,能不能在4.0以下的版本中使用相信很多人跟我一樣,都以為在低版本(如