【问题标题】:Setting values and display Text in Android Spinner在 Android Spinner 中设置值和显示文本
【发布时间】:2015-11-25 14:41:47
【问题描述】:

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

mySpinner.setAdapter(myAdapter);

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

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

其中包含文本和值。

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

例如:

文本值
猫 10
山 5
石头 9
鱼 14
河 13
腰部 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. l​​ike when Mountain selected i get 5

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

谢谢

【问题讨论】:

  • 如果您不是从持久数据源获取它并且它只是一个显示文本和值的静态数组,那么另一个很好的选择是一个枚举。如果您有兴趣,请告诉我,我会发布答案。

标签: java android drop-down-menu spinner


【解决方案1】:

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

【讨论】:

  • 如果你有 textvalue 自定义类 @Override public String toString() { return getText(); 就足够了}
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多