【发布时间】:2015-05-02 02:30:04
【问题描述】:
好的,我的question 的答案建议用于 Volley 实施。我确实尝试了一些示例,阅读了一些文章,是的,我对 Volley 有点兴奋,它可以让我的应用程序生活更轻松。但是那里没有很多文档,对于像我这样的新手来说,我发现很难实现它。
这是我卡住的地方:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
StringRequest movieReq = new StringRequest(url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, response.toString());
arrayList = new ArrayList<HashMap<String, String>>();
try {
jsonArray = jsonObject.getJSONArray("posts");
for (int z = 0; z < jsonArray.length(); z++) {
HashMap<String, String> map = new HashMap<String, String>();
JSONObject jsonObject1 = jsonArray.getJSONObject(z);
String url = jsonObject1.getString("url");
String title = jsonObject1.getString("title");
String content = jsonObject1.getString("content");
map.put(SHAREURL, url);
map.put(TITLE, title);
map.put(CONTENT, content);
JSONArray jsonArray1 = jsonObject1.getJSONArray("attachments");
for (int j = 0; j < jsonArray1.length(); j++) {
JSONObject jsonObject2 = jsonArray1.getJSONObject(j);
String urlImage = jsonObject2.getString("url");
map.put(URL, urlImage);
arrayList.add(map);
}
}
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
listView = (ListView) mActivity.findViewById(android.R.id.list);
adapter = new ListViewAdapter(mActivity, arrayList);
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
},new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
}
});
AppController.getInstance().addToRequestQueue(movieReq);
这是使用 JSON 格式化的页面
"posts" : [{
"title":"Fast and Furious",
"url":"example.com",
"content":"example",
"attachments":[{
"url":"example.jpg" }]}]
【问题讨论】:
-
Volley 也有 JsonObjectRequest 但如果您将 String 作为响应,那么为什么不使用 Gson 或 Jackson 库将您的文本反序列化大约一行?
-
我没用过Gson或者Jackson,给我指点方向,这里没有太多经验
-
如果你愿意,我可以在 Gson 中编写代码。
-
那会有很大帮助
标签: android json gson android-volley