前言:發現一種很方便的爲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方法處理點擊事件即可。