设置值并在Android Spinner中显示文本

时间:2010-05-31 07:50:14

标签: java android drop-down-menu spinner

我需要帮助设置值并在微调器中显示文本。 按照现在我用数组适配器填充我的微调器,例如

mySpinner.setAdapter(myAdapter);

据我所知,显示文本和旋转器在同一位置的值相同。我可以从微调器获得的另一个属性是项目上的位置。

现在在我的情况下,我希望像我们在.NET中的下拉框那样创建微调器。

,其中包含文字和值。

显示文本,值在后端。 所以,如果我更改下拉框,我可以使用其选定的文本或值。 但它没有发生在android spinner的情况下。

例如:

  

文字值   
  猫10   
  山5   
  石头9   
  鱼14   
  河13   
  腰部17

所以从上面的数组我只显示非生物对象文本,我想要的是,当用户选择它们时,我得到了值,就像当山选择我得到5

我希望这个例子让我的问题更加明确......

thankx

2 个答案:

答案 0 :(得分:15)

如果你不想创建自己的适配器类,你可以将数据包装成toString返回你想要在微调器中显示的内容。我使用这样的类:

public class TextItemPair<T> {
    private String text;
    private T item;
    public TextItemPair(String text, T item) {
            this.text = text;
            this.item = item;
    }
    public String getText() {
        return text;
    }
    public T getItem() {
        return item;
    }
    @Override
    public String toString() {
        return getText();
    }
}

当微调器改变时:

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    YourTypeHere t = ((TextItemPair<YourTypeHere>)spinner.getItemAtPosition(position)).getItem();
}

答案 1 :(得分:11)

步骤1:为文本和值对创建数据模型

步骤2:扩展BaseAdapterArrayAdapter以包围您的数据模型,覆盖getView()以返回您想要在Spinner本身显示的内容

步骤3:在选择事件中,使用位置在数据模型中查找相应的对象,并查找值

如果要在Spinner中显示的只是数据模型中每个元素的文本表示,则可以跳过自定义Adapter - 只需使用ArrayAdapter<YourModelClass>并覆盖toString()YourModelClass返回您想要的任何显示文字。