Я использую 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)
я всегда получаю нулевое значение
Спасибо
Попробуй это :
ОБРАЗЕЦ 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();
}
}
Других решений пока нет …