Android 如何将Json数组分配到微调器列表中?
我有一个JSON示例列表,如下所示,我尝试将其放入我的微调器中:- [{“职业id”:0,“职业名称”:“教师”},{“职业id”:1,“职业名称”:“企业主”}] 当我尝试应用这些代码时:-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()) {
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"))