android - 将自定义对象设置为 Spinner 并显示特定属性

标签 android spinner adapter

我有一个微调器,我需要用字符串值填充它,但我还需要保存该字符串的 ID。

我有这个结构要在微调器中显示

public class Item{

    private Integer id;

    private Double name;
}

我想在微调器中显示名称,但是当我选择一个项目并按下按钮时,我想获得该名称的 ID。

字符串不重复,所以我可以做 Map<Integer, String>来管理这个,但我想知道是否存在更好的解决方案,比如自定义适配器或微调器的布局,或者为微调器设置一种数据源对象并显示对象的特定属性。

这是我的 spinner_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/spinnerTarget"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="12pt"
    android:gravity="center"/>

最佳答案

像这样改变你的模型类

public class Item{

private String id;
private String name;

 public String getId() {
    return id;
}

public String getName() {
    return name;
}

public String toString() {
return getName();
}

}

像这样设置微调器适配器

ArrayAdapter<Item> adapter =
                        new ArrayAdapter<Item>(getActivity(), android.R.layout.simple_spinner_dropdown_item, dataNew);
spinner.setAdapter(adapter);

现在获取所选项目的 id,

 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
          //get id of the selected item using position 'i'
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

关于android - 将自定义对象设置为 Spinner 并显示特定属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48931468/

相关文章:

java - Android NavigationView 菜单切换按钮

android - : attribute mutableText (aka yodgorbekkomilov. edgar.footballapp :mutableText) not found. ?

android - Activity UI 元素未显示

android - 如何使用文本+图像动态填充 Android 微调器

javascript - 如何在调用事件后延迟执行函数?

android - ListView 以编程方式突出显示行项目

android - 应用程序安装后如何进行一些操作?

android - 具有自定义 ArrayAdapter 的微调器,用于不显示所选项目的对象

c# - 基于 Visual Studio c# 中的源库创建自己的库

design-patterns - 桥接模式和适配器模式的区别