我正在为学校开发Android App(Too order objects),我想制作一个带有类别标签的Spinner。 但是,当选择标签时,我也希望获得所选类别的ID。 感谢我的webservice,我已经可以将我的数据转换为JSON,但我不知道如何为我的微调器创建自己的自定义适配器。
JSON看起来像这样:
[{"id":"1","name":"VEHICULES","subcategories":
[
{"id":"1","name":"Voitures"},
{"id":"2","name":"Motos"},
{"id":"3","name":"Equipement auto"},
{"id":"4","name":"Equipement moto"},
{"id":"5","name":"Autres"}]
},
{"id":"2","name":"IMMOBILIER","subcategories":
[
{"id":"6","name":"Locations"},
{"id":"7","name":"Colocations"},
{"id":"8","name":"Autres"}]
}]
搜索我自己的适配器,我创建了一个类类的java类:
public class Categories {
public int id;
public String name;
public Categories(int id, String name) {
this.id = id;
this.name = name;
}
}
而且,在我的片段上,我可以获取我的JSON并阅读它:
public class AttemptCategories extends AsyncTask<String, String, String> {
String categoriesURL = "http:blabla.com";
JSONArray dataJsonArr = null;
JSONArray dataJsonArr2 = null;
List<Categories> listCat = new ArrayList<>();
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(String... arg0Z) {
try {
JSONObject json = jsonParser.getJSONFromUrl(categoriesURL);
dataJsonArr = json.getJSONArray("categories");
for (int i = 0; i < dataJsonArr.length(); i++) {
JSONObject c = dataJsonArr.getJSONObject(i);
Categories cat = new Categories(Integer.parseInt(c.getString("id")), c.getString("name"));
listCat.add(cat);
dataJsonArr2 = c.getJSONArray("subcategories");
for(int j = 0; j < dataJsonArr2.length(); j++) {
JSONObject s = dataJsonArr2.getJSONObject(j);
Categories subcat = new Categories(Integer.parseInt(s.getString("id")), s.getString("name"));
listCat.add(subcat);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String strFromDoInBg) {
adapter = new ArrayAdapter<>(getActivity().getApplicationContext(), 0, listCat);
sCategories.setAdapter(adapter);
}
}
当我尝试加载我想看到我的微调器的页面时,我的应用程序崩溃了...我尝试了它进入调试模式但没有出现异常。
有人知道出了什么问题或者我该如何解决我的问题?