Nim*_*S-H 44 android hashmap spinner
我有一个spiner,我想设置一个键和一个值,我使用HashMap,这是工作,但显示一行,如下所示:

码:
final View rootView = inflater.inflate(R.layout.fragment_photos, container, false);
Spinner spin=(Spinner)rootView.findViewById(R.id.spinner1);
HashMap<Integer, String> P_Hash=new HashMap<Integer, String>();
Update Get_Information=new Update(rootView.getContext());
ArrayList<String> Province_NAME=new ArrayList<String>();
Province_NAME=Get_Information.GET_Province();
ArrayList<Integer> Province_ID=new ArrayList<Integer>();
Province_ID=Get_Information.Get_Province_ID();
for (int i = 0; i < Province_ID.size(); i++)
{
P_Hash.put(Province_ID.get(i), Province_NAME.get(i));
Log.d("Province_ID.get(i)", Province_ID.get(i)+"");
Log.d(" Province_NAME.get(i)", Province_NAME.get(i)+"");
}
ArrayAdapter<HashMap<Integer, String>> adapter = new ArrayAdapter<HashMap<Integer,String>>(rootView.getContext(), android.R.layout.simple_spinner_item);
adapter.add(P_Hash);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
Sri*_*uni 144
使用键和值填充微调器的更好方法应该是:
第1步:创建POJO类,它将处理键和值
public class Country {
private String id;
private String name;
public Country(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//to display object as a string in spinner
@Override
public String toString() {
return name;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Country){
Country c = (Country )obj;
if(c.getName().equals(name) && c.getId()==id ) return true;
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
注意: toString()方法很重要,因为它负责在微调器中显示数据,你可以根据需要修改toString()
第2步:准备要在微调器中加载的数据
private void setData() {
ArrayList<Country> countryList = new ArrayList<>();
//Add countries
countryList.add(new Country("1", "India"));
countryList.add(new Country("2", "USA"));
countryList.add(new Country("3", "China"));
countryList.add(new Country("4", "UK"));
//fill data in spinner
ArrayAdapter<Country> adapter = new ArrayAdapter<Country>(context, android.R.layout.simple_spinner_dropdown_item, countryList);
spinner_country.setAdapter(adapter);
spinner_country.setSelection(adapter.getPosition(myItem));//Optional to set the selected item.
}
Run Code Online (Sandbox Code Playgroud)
第3步:最后在微调器的onitemselected listener方法中获取所选项的键和值
spinner_country.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Country country = (Country) parent.getSelectedItem();
Toast.makeText(context, "Country ID: "+country.getId()+", Country Name : "+country.getName(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Run Code Online (Sandbox Code Playgroud)
一切顺利,快乐编码!
Har*_*ana 85
尝试使用HashMap存储键值对数据,在您的情况下使用spinner项索引作为键,将省_ID作为值.有关详细信息,请查看以下示例
为微调器准备值
String[] spinnerArray = new String[Province_ID.size()];
HashMap<Integer,String> spinnerMap = new HashMap<Integer, String>();
for (int i = 0; i < Province_ID.size(); i++)
{
spinnerMap.put(i,Province_ID.get(i));
spinnerArray[i] = Province_NAME.get(i);
}
Run Code Online (Sandbox Code Playgroud)
将值设置为微调器
ArrayAdapter<String> adapter =new ArrayAdapter<String>(context,android.R.layout.simple_spinner_item, spinnerArray);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
获得微调器的价值
String name = spinner.getSelectedItem().toString();
String id = spinnerMap.get(spinner.getSelectedItemPosition());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66077 次 |
| 最近记录: |