我想将Spinner与键值对一起使用。 UI显示KEY,并获得选择我获得VALUE。
所以我使用HashMap,
String name[] = { "Btech", "Mtech", "Bca", "Mca" };
String id[] = { "111", "222", "333", "444" };
HashMap<String, String> spinnerMap = new HashMap<String, String>();
for (int i = 0; i < name.length; i++) {
spinnerMap.put(name[i], id[i]);
}
ArrayAdapter<HashMap<String, String>> adapter = new ArrayAdapter<HashMap<String, String>>(this, android.R.layout.simple_spinner_item);
adapter.add(spinnerMap);
spinner.setAdapter(adapter);
但它正在显示
{Btech=111,Mtech=222,Bca=333,Mca=444}
答案 0 :(得分:0)
它使用HashMap的toString方法显示值。所以它认为这是旋转器中的一个对象。
有两种方法可以做到这一点:
实现ArrayAdapter的扩展并覆盖getView()方法以返回适当的值。
实现自己的Object以填充微调器并覆盖其toString方法。
第一种方法有偏好,因为它允许更大的灵活性。
答案 1 :(得分:0)
Spinner spinner= (Spinner)
.findViewById(R.id.spinner1);
ArrayList<HashMap<String, String>> list = yourList;
SimpleAdapter arrayAdapter = new SimpleAdapter(mContext, list,
R.layout.spinner_item2, new String[] { SystemGlobal.CODE,
SystemGlobal.DESCRIPTION }, new int[] { R.id.txv_code,
R.id.txv_description });
spinner.setAdapter(arrayAdapter);
spinner
.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
String desc = ((TextView) view
.findViewById(R.id.txv_description)).getText()
.toString();
String code = ((TextView) view
.findViewById(R.id.txv_code)).getText()
.toString();
Toast.makeText(mContext, "Code: "+code+", Desc: "+ desc, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
xml file:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/txv_code"
style="@style/textview_style"
android:layout_width="1dip"
android:layout_height="wrap_content"
android:visibility="gone" />
<TextView
android:id="@+id/txv_description"
style="@style/textview_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="@dimen/spinner_item_padding" />
</LinearLayout>