Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将Json数组分配到微调器列表中?_Android_Arrays_Json_Kotlin_Spinner - Fatal编程技术网

Android 如何将Json数组分配到微调器列表中?

Android 如何将Json数组分配到微调器列表中?,android,arrays,json,kotlin,spinner,Android,Arrays,Json,Kotlin,Spinner,我有一个JSON示例列表,如下所示,我尝试将其放入我的微调器中:- [{“职业id”:0,“职业名称”:“教师”},{“职业id”:1,“职业名称”:“企业主”}] 当我尝试应用这些代码时:- val jsonArray = JSONArray(jsonString) var list = ArrayList<Occupation>() var x = 0 while (x < jsonArray.length()) {

我有一个JSON示例列表,如下所示,我尝试将其放入我的微调器中:-

[{“职业id”:0,“职业名称”:“教师”},{“职业id”:1,“职业名称”:“企业主”}]

当我尝试应用这些代码时:-

val jsonArray = JSONArray(jsonString)

        var list = ArrayList<Occupation>()

        var x = 0
        while (x < jsonArray.length()) {
            var jsonObject = jsonArray.getJSONObject(x)

            list.add(Occupation(
                    jsonObject.getString("occupation_id"),
                    jsonObject.getString("occupation_name")
            ))
            x++
        }

        var spinnerOccupation = findViewById<Spinner>(jasiez.helloworld.jasiez.R.id.spinnerOccupation)
        // Initializing an ArrayAdapter
        val occupationAdapter = ArrayAdapter(
                this, // Context
                android.R.layout.simple_spinner_item,
                list// Array
        )

        occupationAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line)
        spinnerOccupation.adapter = occupationAdapter

I获取错误未解析的引用:职业名称。如果我更改为列表[0]。职业名称.toList()我将在每个下拉列表选项中显示第一个职业名称,其中包含1个字符


如何在这里的每个选项中获得正确的职业名称?请帮忙。谢谢。

我在处理JSon时也遇到过同样的问题。我所做的是从我的对象中重写
到字符串
。在您的情况下,您可以从Occupations对象中将
toString
重写为您的职业名称

public class Occupation {
    int occupation_id;
    String occupation_name;

    public Occupation() {
    }

    public int getOccupation_id() {
        return occupation_id;
    }

    public void setOccupation_id(int occupation_id) {
        this.occupation_id = occupation_id;
    }

    public String getOccupation_name() {
        return occupation_name;
    }

    public void setOccupation_name(String occupation_name) {
        this.occupation_name = occupation_name;
    }

    //converts your occupation_name to string
    @NonNull
    @Override
    public String toString() {
        return occupation_name;
        //or you can also add title to your occupation name by doing this
       //return "Occupation: "+ occupation_name;
    }
}

检查这是否对您有效。

当您使用ArrayAdapter时,您只能传递字符串列表(list),不能传递like list,请按如下所示制作列表:

    var list = ArrayList<String>()
    .......
    list.add(jsonObject.getString("occupation_name"))
var list=ArrayList()
.......
添加(jsonObject.getString(“职业名称”))

您可以编写一个自定义适配器来保存数据列表,并覆盖getview以在微调器的textview中设置值。请看一个例子

public class Occupation {
    int occupation_id;
    String occupation_name;

    public Occupation() {
    }

    public int getOccupation_id() {
        return occupation_id;
    }

    public void setOccupation_id(int occupation_id) {
        this.occupation_id = occupation_id;
    }

    public String getOccupation_name() {
        return occupation_name;
    }

    public void setOccupation_name(String occupation_name) {
        this.occupation_name = occupation_name;
    }

    //converts your occupation_name to string
    @NonNull
    @Override
    public String toString() {
        return occupation_name;
        //or you can also add title to your occupation name by doing this
       //return "Occupation: "+ occupation_name;
    }
}
    var list = ArrayList<String>()
    .......
    list.add(jsonObject.getString("occupation_name"))