填充:来自json的listview

时间:2019-02-19 15:58:14

标签: android json listview

我想从我的json中填充一个列表视图,如下所示:

{ library: { books: [ { name: "name", autor: "autor",year: "year"}, { name: "name", autor: "autor", year: "year"}], library: { name: "name"}}}

在主要活动中,我有此方法

public void books() {

    request = new JsonRequestClass(getContext(), JsonMethodClass.GET, null);
    try {
        String response = request.execute("http://booksjson").get();

        ResponseListModel responseListModel = new ResponseListModel(response);
        if (responseListModel.isSuccess() == true) {

        } else {
            responseListModel.setSuccess(false);
            responseListModel.setMessage("Error");
            //Toast.makeText(getContext(), responseListModel.getMessage(), Toast.LENGTH_LONG).show();
        }

    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }

}

此方法可帮助我阅读json 但是如果我有一个void方法,并且在我的适配器类中正在等待模型类的arraylist,如何填充listview?

public BookAdapter(Context context, List<Book> list) {
    this.context = context;
    this.list = list;
}

我正在添加我的ResponseListModel模型类

public class ResponseListModel {

    private boolean success;
    private String message;
    private JSONArray list;
    private JSONObject object;

    public ResponseListModel(String pObjetc) {
        try {

            JSONObject object = new JSONObject(pObjetc);

            this.message = object.getString("message");
            this.success = object.getBoolean("success");
            //response.setMessage(object.optString("message"));
            String strModel = object.getString("strModel");
            String type = object.optString("type");
            if (type.equals("array")) {
                this.list = object.getJSONArray("model");// new JSONArray(strModel);
            } else
                object = object.getJSONObject("model");

        } catch (JSONException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }

    public String getMessage() {
        return message;
    }

    public JSONArray getList() {
        return list;
    }

    public JSONObject getObject() {
        return object;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public void setList(JSONArray list) {
        this.list = list;
    }

    public void setObject(JSONObject object) {
        this.object = object;
    }
}

更具体地说,我需要主要这条线上的帮助

adapter = new BookAdapter(this, books);

2 个答案:

答案 0 :(得分:0)

您必须反序列化json数组响应到java对象的arraylist。您可以使用默认的Json android json packagegson library来做到这一点。

然后,您可以为适配器提供Book类对象的数组列表。

有关更多详细信息,请参阅json to recyclerview

仅供参考:您应使用Recyclerview

的列表视图的更新版本。

快乐的编码……:)

答案 1 :(得分:0)

您必须将response变量转换为java class,可以使用诸如Gson和注释之类的类。

您可以检查this page并粘贴JSON以帮助您了解其结构。