前言:发现一种很方便的为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方法处理点击事件即可。