我想从我的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);
答案 0 :(得分:0)
您必须反序列化json数组响应到java对象的arraylist。您可以使用默认的Json android json package或gson library来做到这一点。
然后,您可以为适配器提供Book类对象的数组列表。
有关更多详细信息,请参阅json to recyclerview。
仅供参考:您应使用Recyclerview
的列表视图的更新版本。快乐的编码……:)
答案 1 :(得分:0)
您必须将response
变量转换为java class
,可以使用诸如Gson
和注释之类的类。
您可以检查this page并粘贴JSON以帮助您了解其结构。