首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Android微调器中设置值和显示文本

在Android微调器中设置值和显示文本
EN

Stack Overflow用户
提问于 2010-05-31 15:50:14
回答 2查看 27.6K关注 0票数 17

我需要帮助在设置值和显示文本在微调器。现在,我正在通过数组适配器填充我的微调器

代码语言:javascript
复制
mySpinner.setAdapter(myAdapter);

据我所知,在这样做之后,显示文本和微调器在相同位置的值是相同的。我可以从spinner中获得的另一个属性是项目上的位置。

现在在我的例子中,我想让微调器像我们在.NET中的下拉框一样。

它包含文本和值。

其中显示为文本,值在后端。因此,如果我更改下拉框,我可以使用它的选定文本或值。但这不会发生在android spinner的情况下。

例如:

文本值

猫10山5石9鱼14河13腰17

因此,从上面的数组中,我只显示非生物对象文本,我想要的是,当用户选择它们时,我会得到那里的值,例如,当选择Mountain时,我会得到5

我希望这个例子能让我的问题更清晰……

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-31 19:52:16

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

步骤2:扩展BaseAdapterArrayAdapter以包装您的数据模型,覆盖getView()以返回您希望在Spinner本身中显示的任何内容

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

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

票数 13
EN

Stack Overflow用户

发布于 2010-06-01 00:41:08

如果您不想创建自己的适配器类,那么您可以将数据包装在某个东西中,让toString返回您希望在微调器中显示的内容。我使用了一个这样的类:

代码语言:javascript
复制
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();
    }
}

当微调器发生变化时:

代码语言:javascript
复制
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    YourTypeHere t = ((TextItemPair<YourTypeHere>)spinner.getItemAtPosition(position)).getItem();
}
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2942132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档