如何以这种特殊方式在Android中使用微调器?

时间:2012-04-26 12:29:58

标签: java android spinner adapter

所以,我有一个名称和id

的ArrayList
Gil 232
Asty 2423 and so on. 

要在微调器中使用它,我所做的是创建两个单独的String Arraylists。一个包含名称,另一个包含相应的ID。因此,一旦选择了用户,我将从该位置获得相应的ID。

我不知道如何做最后一部分。至于如何获得这个位置?> parent.getItemAtPosition(pos).toString(); 这再次给出了我的名字,而不是ArrayList中名称的位置,我可以用它从其他列表中检索ID。怎么做?而且,他们是一个更好的方式去做吗?

2 个答案:

答案 0 :(得分: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一起使用。

答案 1 :(得分:0)

pos变量是从Spinner中选择的项目的位置,因此您可以使用此位置来获取所选对应名称的id(来自第二个ArrayList)。

作为替代方案,您还可以创建HashMap<String,String> map  并且在该地图中放置了map.put(name,id);之类的值,因此当用户从Spinner中选择值时,您将选择该名称。然后使用地图获取相应的ID

like String id = map.get(selected_name);

希望它会有所帮助。