android — перебирая респон Volley JsonObjectRequest и отправляя параметры в Stack Overflow

Я использую jsonobjectrequest для отправки моего параметра на страницу php, которая выдаст требуемые результаты,
пока что я сделал в коде Android получить значение, которое я хочу передать в jsonobject следующим образом

JSONObject Cat_id_Object = new JSONObject();
Cat_id_Object.put("cat_id", "2");

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
url, Cat_id_Object,
new Response.Listener<JSONObject>() {

@Override
public void onResponse(JSONObject response)
{
Log.d(TAG, response.toString());
pDialog.hide();
Toast.makeText(getActivity(), "data received! "+response.length(), Toast.LENGTH_SHORT).show();
for (int i = 0; i < response.length(); i++)
{
try {
ItemsProperty Item = new ItemsProperty();
Item.setitem_id(response.getJSONArray("item_id").getString(i));
Item.setitem_name(response.getJSONArray("item_name").getString(i));
Item.setitem_price(response.getJSONArray("item_price").getString(i));
Item.setitem_img(response.getJSONArray("item_img").getString(i));

test = (response.getJSONArray("item_name").getString(2).toString());

ItemsList.add(Item);
} catch (JSONException e) {
e.printStackTrace();
}
adapter.notifyDataSetChanged();
}
Toast.makeText(getActivity(), "data received! " + test, Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
pDialog.hide();
Toast.makeText(getActivity(), "data NOT received!", Toast.LENGTH_SHORT).show();
}
});
the response.length() always returns 5, which is the true result if i was sending a zero parameter to the php page.

это страница php:

$cid = $_POST['cat_id'];
$sql = "SELECT item_id,item_name,item_price,item_img FROM items where cat_id = '".$cid."' ";

а также длина ответа 5, но я не могу прочитать данные в нем!
используя это

response.getJSONArray("item_id").getString(i)

я всегда получаю нулевое значение

Спасибо

1

Решение

Попробуй это :

ОБРАЗЕЦ JSON STRING:

 {
"products": [
{
"item_id": "1",
"item_name": "Item1",
"item_price": 20
},
{
"item_id": "1",
"item_name": "Item2",
"item_price": 30
}
]
}

Ваш ответ должен быть:

public void onResponse(JSONObject response) {
Log.d("Response: ", response.toString());
try {
JSONArray jsArr = response.getJSONArray("products");
if (jsArr.length() > 0) {

for (int i = 0; i < jsArr.length(); i++) {
ItemsProperty item = new ItemsProperty ();
item.item_id= jsArr.getJSONObject(i).getString("item_id");
item.item_name= jsArr.getJSONObject(i).getString("item_name");
item.item_price= jsArr.getJSONObject(i).getString("item_price");
ItemsList.add(i, item);
}
mAdapter.notifyDataSetChanged();
}
} catch (JSONException e) {
Log.e("REGISTER ERROR", "JSON Parsing error: " + e.getMessage());
e.printStackTrace();
}
}
0

Другие решения

Других решений пока нет …