设置微调器项目的ID

And*_*rew 30 android spinner

我有一个字符串数组我正在填充一个Spinner对象.但是,我想在Spinner的每个元素上附加一个ID,所以当用户选择一个项目时,我会将其ID用于保存到其他一些数据.我怎样才能做到这一点?

mfc*_*mfc 37

创建一个StringWithTag类,并使用代替列表中的字符串名称,如下所示: -

public class StringWithTag {
    public String string;
    public Object tag;

    public StringWithTag(String stringPart, Object tagPart) {
        string = stringPart;
        tag = tagPart;
    }

    @Override
    public String toString() {
        return string;
    }
}
Run Code Online (Sandbox Code Playgroud)

在添加项目到微调部分: -

List<StringWithTag> list = new ArrayList<StringWithTag>();
list.add(new StringWithTag("Oldman", "12345"));
list.add(new StringWithTag("Umpire", "987654"));
list.add(new StringWithTag("Squad", "ABCDEE"));
ArrayAdapter<StringWithTag> adap = new ArrayAdapter<StringWithTag> (this, android.R.layout.simple_spinner_item, list);
....
....
Run Code Online (Sandbox Code Playgroud)

在听众中: -

public void onItemSelected(AdapterView<?> parant, View v, int pos, long id) {
    StringWithTag s = (StringWithTag) parant.getItemAtPosition(pos);
    Object tag = s.tag;
}
Run Code Online (Sandbox Code Playgroud)

瞧!}

  • @Robert ...错误... StringWithTag是在上面的第一个代码块中创建的. (5认同)
  • 这个解决方案优雅而完美!这也实现了像HTML <select>这样的Spinner键值 (3认同)
  • @Violet,所有继承自Object和toString的类都是从Object继承的方法 (2认同)

Moj*_*sin 19

你是什​​么意思id.您可以使用ArrayAdapter填充Spinner.选择项目时,只需从适配器获取元素并保存所需的数据.

Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<MyObject> adapter = ... // initialize the adapter
adapter.setDropDownViewResource(android.R.layout.some_view);
spinner.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

当选择项目时

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    MyObject selected = parent.getItemAtPosition(pos);
    // save any data relevant with selected item   
}
Run Code Online (Sandbox Code Playgroud)

如果要在db中存储数据,可以使用CursorAdapter并在onItemSelected中从光标中获取所选的项ID.

  • 如果我使用 CursorAdapter,我如何告诉它“名称”列用于显示在列表中的文本? (2认同)