這里是使用 TOC 生成的目錄:
•Layout文件定義
◦ListView定義
◦item 模板定義
•代碼
◦初始化列表
◦用戶點擊處理
•效果
--------------------------------------------------------------------------------
要使用 ListView 實現一個充值方式選擇,默認想選中第二項,搞了一下午,終于搞定了。原本就沒怎么用 Java 寫過 Android 應用,又隔了好久沒寫,一切都生疏了,半吊子變成大呆瓜了……
Layout文件定義
分兩部分,一部分是 ListView 的定義,一部分 item 模板,即 row 的定義。
ListView定義
說起來也很簡單,下面是 Layout 文件中的 ListView 定義:
<ListView android:id="@+id/recharge_method_list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="6dp" android:dividerHeight="2dp" android:divider="@color/ssq_bkgnd" android:background="@android:color/white" android:choiceMode="singleChoice" android:listSelector="@null" > </ListView>
嘿,別說,CSDN的Markdown編輯器比原來的默認編輯器好用多了,插入代碼更簡單了。這是第一次使用CSDN的Markdown,贊一個。
item 模板定義
item模板如下定義:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="60dp" android:gravity="center_vertical" android:background="@drawable/option_selector" > <ImageView android:id="@+id/recharge_method_icon" android:layout_width="40dp" android:layout_height="40dp" android:layout_marginLeft="20dp" android:layout_marginRight="4dp" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" > <TextView android:id="@+id/recharge_method_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp" /> <TextView android:id="@+id/recharge_method_clue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="12sp" /> </LinearLayout> <ImageView android:id="@+id/recharge_method_checked" android:layout_width="34dp" android:layout_height="28dp" android:layout_marginRight="16dp" android:src="@drawable/option_checked" android:visibility="invisible" /></LinearLayout>
我為了給一個 ListView 的 item 顯示一個選擇圖標,在定義 item 模板文件時直接加了一個 ImageView ,通過控制它的顯示和隱藏來達到看起來選中的效果。偷了個懶,這是比較簡單的實現,在 ListView 中 item 數量不多時對內存、性能等影響不大。
代碼
代碼比較簡單,分兩部分來看吧,一部分是初始化列表,一部分是用戶點擊列表中的某項后切換選中標記。
初始化列表
initRechargeList()方法用來初始化充值方式列表,代碼如下:
private void initRechargeList(){ actionTexts = new String[]{ getString(R.string.recharge_unionpay), getString(R.string.recharge_alipay), getString(R.string.recharge_bestpay) }; actionClue = new String[]{ getString(R.string.recharge_unionpay_clue), getString(R.string.recharge_alipay_clue), getString(R.string.recharge_bestpay_clue) }; actionImages = new int[]{ R.drawable.unionpay, R.drawable.recharge_icon_alipay, R.drawable.recharge_icon_bestpay }; actionList = (ListView)findViewById(R.id.recharge_method_list); actionItems = new ArrayList<HashMap<String, Object>>(); actionAdapter = new SimpleAdapter(this, actionItems, R.layout.recharge_method_list_item, new String[]{"action_icon", "action_name", "action_clue"}, new int[]{R.id.recharge_method_icon, R.id.recharge_method_name, R.id.recharge_method_clue}); for(int i = 0; i < actionImages.length; ++i) { HashMap<String, Object> item = new HashMap<String, Object>(); item.put("action_icon", actionImages[i]); item.put("action_name", actionTexts[i]); item.put("action_clue", actionClue[i]); actionItems.add(item); } actionList.setAdapter(actionAdapter); actionList.setOnItemClickListener(itemListener); actionList.post(new Runnable() { @Override public void run() { lastCheckedOption = actionList.getChildAt(1).findViewById(R.id.recharge_method_checked); lastCheckedOption.setVisibility(View.VISIBLE); actionList.setItemChecked(1, true); } }); }上面的代碼是初始化充值方式列表。 ListView 的用法也比較簡單,View 主站蜘蛛池模板: 麦盖提县| 扎囊县| 顺平县| 澜沧| 西乡县| 洞口县| 双峰县| 辛集市| 凤台县| 比如县| 精河县| 哈巴河县| 昭苏县| 建始县| 罗定市| 鱼台县| 侯马市| 梅河口市| 龙口市| 铜川市| 乳山市| 米泉市| 米脂县| 读书| 信阳市| 和田县| 枣阳市| 康定县| 壶关县| 沧源| 商洛市| 东平县| 山西省| 榆树市| 乌恰县| 方城县| 化隆| 十堰市| 旺苍县| 德格县| 湘潭市|