1

所以,我有一个具有名称和 ID 的 ArrayList

Gil 232
Asty 2423 and so on. 

为了在微调器中使用它,我所做的是创建两个单独的字符串数组列表。一个包含名称,另一个包含相应的 ID。所以,一旦用户被选中,我就会从该位置获取相应的 id。

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

4

2 回答 2

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) {
    }

}

Then create an ArrayList<Data> and use with your CustomAdapter.

于 2012-04-26T12:38:47.220 回答
0

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

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

like String id = map.get(selected_name);

希望它会有所帮助。

于 2012-04-26T14:34:31.133 回答