package com.grumoon.volleydemo.fragment; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.json.JSONArray; import org.json.JSONObject; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.SimpleAdapter; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.grumoon.volleydemo.R; import com.grumoon.volleydemo.util.Constants; import com.grumoon.volleydemo.util.StringUtil; import com.grumoon.volleydemo.util.ToastUtil; import com.grumoon.volleydemo.util.VolleyUtil; public class JsonRequestFragment extends Fragment { public static final int INDEX = 12; private ListView lvCar; private static final int[] ids = { R.id.tv_car_name, R.id.tv_car_level, R.id.tv_car_price }; private static final String[] keys = { "name", "level", "price" }; private List<Map<String, String>> carDataList; private SimpleAdapter adapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fr_json_request, container,false); carDataList = new ArrayList<Map<String, String>>(); lvCar = (ListView) view.findViewById(R.id.lv_car); adapter = new SimpleAdapter(getActivity(), carDataList, R.layout.fr_json_request_list_item, keys, ids); lvCar.setAdapter(adapter); // 发起请求 JsonObjectRequest request = new JsonObjectRequest(StringUtil.preUrl(Constants.DEFAULT_JSON_REQUEST_URL), null, new Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { try { if (!response.has("result")) { return; } JSONObject result = response.getJSONObject("result"); if (!result.has("fctlist")) { return; } JSONArray factoryArray = result.getJSONArray("fctlist"); if (factoryArray.length() == 0) { return; } JSONObject factory = factoryArray.getJSONObject(0); if (!factory.has("serieslist")) { return; } JSONArray seriesArray = factory.getJSONArray("serieslist"); carDataList.clear(); for (int i = 0; i < seriesArray.length(); i++) { JSONObject series = seriesArray.getJSONObject(i); Map<String, String> seriesMap = new HashMap<String, String>(); seriesMap.put("name", series.getString("name")); seriesMap.put("level", "级别:"+series.getString("levelname")); seriesMap.put("price", "价格:"+series.getString("price")); carDataList.add(seriesMap); } adapter.notifyDataSetChanged(); } catch (Exception e) { ToastUtil.showToast(getActivity(), getResources().getString(R.string.request_fail_text)); } } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { ToastUtil.showToast(getActivity(), getResources().getString(R.string.request_fail_text)); } }); // 请求加上Tag,用于取消请求 request.setTag(this); VolleyUtil.getQueue(getActivity()).add(request); return view; } @Override public void onDestroyView() { VolleyUtil.getQueue(getActivity()).cancelAll(this); super.onDestroyView(); } }