Android Spinner设置自定义适配器

时间:2015-09-24 13:48:09

标签: java android json android-arrayadapter android-spinner

我正在为学校开发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);
    }
}

当我尝试加载我想看到我的微调器的页面时,我的应用程序崩溃了...我尝试了它进入调试模式但没有出现异常。

有人知道出了什么问题或者我该如何解决我的问题?

0 个答案:

没有答案