使用string-arrays爲adapterview添加數據源

前言:發現一種很方便的爲AdapterView(如ListView, Spinner)添加數據源的方式。
轉載請註明出處:http://blog.csdn.net/u014158743/article/details/52387990

首先, 在strings.xml中添加一組string-array

    <string-array name="battery_level">
        <item>電池電量</item>
        <item>1%</item>
        <item>2%</item>
        <item>3%</item>
        <item>4%</item>
        <item>5%</item>
        <item>6%</item>
        <item>7%</item>
        <item>8%</item>
        <item>9%</item>
        <item>10%</item>
        <item>11%</item>
        <item>12%</item>
        <item>13%</item>
        <item>14%</item>
        <item>15%</item>
    </string-array>

然後在佈局文件中直接android:entries引用即可, 如下:

<Spinner
        android:id="@+id/battery_sp"
        android:entries="@array/battery_level"
        android:layout_gravity="center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

下拉列表兩級聯動小Demo:

// spinnerFirst爲一級下拉列表, 裏面三個item
spinnerFirst.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // TODO Auto-generated method stub
        Context context = AdjustTemplateActivity.this;
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_dropdown_item_1line);
        switch (position) {
        case 0:
            adapter.addAll(context.getResources().getStringArray(R.array.jtj_level_values));// 隨便定義三組string-array
            break;
        case 1:
            adapter.addAll(context.getResources().getStringArray(R.array.lh_level_values));
            break;
        case 2:
            adapter.addAll(context.getResources().getStringArray(R.array.hcg_level_values));
            break;
        default:
            break;
        }
        spinnerSecond.setAdapter(adapter);
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub
    }
});

ListView同樣可以, 比如說一個簡易的ListView的Dialog:

public AlertDialog showListDialog(int arrayId){
    ArrayAdapter<String> adapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1,
            context.getResources().getStringArray(arrayId));//這裏
    AlertDialog dialog = new AlertDialog.Builder(context).setAdapter(adapter, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
        }
    }).create();
    dialog.show();
    return dialog;
}

調用:

listDialog = showListDialog(R.array.cal_item);
listDialog.getListView().setOnItemClickListener(this);

再重寫onItemClick方法處理點擊事件即可。

發佈了41 篇原創文章 · 獲贊 10 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章