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

2022-09-03 00:58:43

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

mySpinner.setAdapter(myAdapter);

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

现在,在我的情况下,我想使微调器像下拉框一样,我们在.NET中具有。

它包含文本和值。

其中,显示文本,值位于后端。因此,如果我更改下拉框,我可以使用其选定的文本或值。但它没有发生在Android微调器的情况下。

例如:

文字价值
猫 10
山 5
石 9
鱼 14
河 13
里脊肉 17

所以从上面的数组中,我只显示非活动对象文本,我想要的是,当用户选择它们时,我会得到价值,即当山选择时,我得到5

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

谢谢


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

答案 2

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

步骤#2:扩展或环绕数据模型,覆盖以返回要在自身中显示的任何内容BaseAdapterArrayAdaptergetView()Spinner

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

如果要在 中显示的只是数据模型中每个元素的文本表示形式,则可以跳过自定义 - 只需使用并重写 on 即可返回所需的任何显示文本。SpinnerAdapterArrayAdapter<YourModelClass>toString()YourModelClass