如何将项目的不同值设置为 android 微调器?

How to set different value for an item to an android spinner?

我必须在一个项目中为 Android 微调器设置不同的值;当我单击微调器的一个项目时,它表示为显示名称的字符串,我还必须为该项目取另一个值。我正在开发一个项目,我在其中创建 JsonObjectRequest 并解析 json 填充微调器。

我用于微调器的代码是这样的:

MaterialSpinner spinner = (MaterialSpinner) findViewById(R.id.spinner);
spinner.setItems("Ice Cream Sandwich", "Jelly Bean", "KitKat", "Lollipop", "Marshmallow");
spinner.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener<String>() {
    @Override public void onItemSelected(MaterialSpinner view, int position, long id, String item) {
        //Snackbar.make(view, "Clicked " + item, Snackbar.LENGTH_LONG).show();
        Toast.makeText(activity, item, Toast.LENGTH_SHORT).show();
    }
}); 

使用这个库:https://github.com/jaredrummler/MaterialSpinner

那么,如何解析 json 响应并为项目设置 2 值? (显示的字符串名称和该项目的 ID,即使在 json 响应中也是如此。)

如果知道JSON的结构,可以用POJO表示JSON中对象的类,然后用GSON库解析JSON 到你的 Java 对象中。

使用 Gson() 将您的 JSON 列表解析为 Java List 并使用新列表更新 Spinner 中的项目。

格森:

Gradle依赖性:

dependencies {
  implementation 'com.google.code.gson:gson:2.8.6'
}

对于示例和设置 Gson,以下是很好的链接: https://github.com/google/gson - 官方网站 https://guides.codepath.com/android/leveraging-the-gson-library - 教程

  1. 创建一个 POJO class 来存储来自 JSON
  2. 的数据解析
    public class AndroidVersion {
        String name;  
        String id;
    }
  1. 使用 Gson 库
  2. 从 JSON 准备 List<AndroidVersion>
    List<AndroidVersion> androidVersions = Gson().fromJson(json, AndroidVersion.class);
  1. 使用此列表创建自定义 ArrayAdapter/ SpinnerAdapter

  2. 将此适配器设置为 Spinner