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

发布于 2024-09-03 17:58:13 字数 565 浏览 3 评论 0原文

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

mySpinner.setAdapter(myAdapter);

我所知,执行此操作后,显示文本和微调器在同一位置的值是相同的。我可以从微调器获得的另一个属性是项目上的位置。

现在,就我而言,我想要制作类似于 .NET 中的下拉框的微调器。

其中包含文本和值。

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

例如:

文本值
10 类
山 5
石头 9
鱼 14
河13
里脊17

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

我希望这个例子让我的问题更清楚一点。 ..

谢谢

I need help in setting up value and display text in spinner.
as per now I am populating my spinner by array adapter e.g

mySpinner.setAdapter(myAdapter);

and as far as I know after doing this the display text and the value of spinner at same position is same. The other attribute that I can get from spinner is the position on the item.

now in my case I want to make spinner like the drop down box, which we have in .NET.

which holds a text and value.

where as text is displayed and value is at back end.
so if I change drop down box , I can either use its selected text or value.
but its not happening in android spinner case.

For Example:

Text Value

Cat 10

Mountain 5

Stone 9

Fish 14

River 13

Loin 17

so from above array I am only displaying non-living objects text, and what i want is that when user select them I get there value i.e. like when Mountain selected i get 5

I hope this example made my question a bit more clear...

thankx

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

︶葆Ⅱㄣ 2024-09-10 17:58:13

如果您不想创建自己的适配器类,您可以将数据包装在具有 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();
}

If you dont want to go through creating your own adapter-class you can instead wrap you data up in something that has toString returning what you want to show in the spinner. I use a class like this:

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();
    }
}

And when the spinner changes:

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    YourTypeHere t = ((TextItemPair<YourTypeHere>)spinner.getItemAtPosition(position)).getItem();
}
梦幻之岛 2024-09-10 17:58:13

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

第 2 步:扩展 BaseAdapterArrayAdapter 以环绕您的数据模型,覆盖 getView() 返回您想要在 Spinner 本身中显示的任何内容

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

If您想要在 Spinner 中显示的只是数据模型中每个元素的文本表示,您可以跳过自定义 Adapter - 只需使用 ArrayAdapter即可。 YourModelClass> 并重写 YourModelClass 上的 toString() 以返回您想要的任何显示文本。

Step #1: Create a data model for your text and value pair

Step #2: Extend BaseAdapter or ArrayAdapter to wrap around your data model, overriding getView() to return whatever you want to display in the Spinner itself

Step #3: On a selection event, use the position to find the corresponding object in your data model, and look up the value

If all you want to display in the Spinner is just a text representation of each element in the data model, you can skip the custom Adapter -- just use ArrayAdapter<YourModelClass> and override toString() on YourModelClass to return whatever display text you want.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文