【问题标题】:How to use spinner in Android in this particular way?如何以这种特殊方式在 Android 中使用微调器?
【发布时间】:2014-02-13 01:30:52
【问题描述】:
所以,我有一个具有名称和 id 的 ArrayList
Gil 232
Asty 2423 and so on.
要在微调器中使用它,我所做的是创建两个单独的字符串数组列表。一个包含名称,另一个包含相应的 ID。所以,一旦用户被选中,我就会从该位置获取相应的 id。
我不知道最后一部分该怎么做。至于,如何获得职位?> parent.getItemAtPosition(pos).toString();
这再次给了我名称,而不是名称在 ArrayList 中的位置,我可以使用它从另一个列表中检索 ID。怎么做?而且,他们是更好的解决方法吗?
【问题讨论】:
标签:
java
android
spinner
adapter
【解决方案1】:
public class User {
public int id;
public String name;
}
public class CustomAdapter extends ArrayAdapter<Data> implements Spinner
.OnItemSelectedListener {
@Override
public View getView(int position, View convertView, ViewGroup parent){
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(android.R.layout.simple_spinner_item,
parent, false);
Data data = getItem(position);
// Do something with data and view here
return view;
}
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long arg4) {
Data data = getItem(position);
// Do something with data here
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
}
然后创建一个ArrayList<Data> 并与您的CustomAdapter 一起使用。
【解决方案2】:
pos 变量是从 Spinner 中选择的项目的位置,因此您可以使用该位置来获取被选择的相应名称的 id(来自第二个 ArrayList)。
您也可以创建一个HashMap<String,String> map
并在该地图中输入 map.put(name,id); 之类的值,因此当用户从 Spinner 中选择值时,您将选择名称。然后使用地图获取相应的 id
like String id = map.get(selected_name);
希望它会有所帮助。