Recycler View не читает данные Big Volley с параметрами в Android - PullRequest
0 голосов
/ 04 июня 2018

Я использую залп для получения данных из источника данных, проблема в представлении рециркулятора, если я делаю что-то в запросе, например, добавление параметров не работает.Есть ли какие-либо проблемы с залпом?

public void getting locations() {
    String url = "URL REMOVED";
    RequestQueue queue = Volley.newRequestQueue(MainActivity.this); // this = context
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(
            Request.Method.GET, url, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    JSONObject status = null;
                    try {
                        JSONObject jObj = new JSONObject(String.valueOf(response));

                        JSONArray jr = jObj.getJSONArray("products");
                        for(int i=0;i<jr.length();i++)
                        {
                            JSONObject jb1 = jr.getJSONObject(i);
                            String title = jb1.getString("title");
                            Log.d("Title",""+title);
                            String img = jb1.getString("featured_src");
                            JSONArray a = jb1.getJSONArray("categories");
                            String category = "";

                            lstBook.add(new Book(title,"rAJA","Description book",img));

                        }




                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {

    @Override
    public void onErrorResponse(VolleyError error) {
        VolleyLog.d("EROOOOOOOOOOOOOOOOOOOOOR", "Error: " + error.getMessage());
    }
}) {
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        HashMap<String, String> headers = new HashMap<String, String>();
        headers.put("Content-Type", "application/json; charset=utf-8");
        headers.put("User-agent", "My useragent");

        return headers;
    }

};
jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(5000,
        DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
queue.add(jsonObjReq);

}

Проблема в том, что если URL-адрес продукта, он будет показывать данные, в противном случае он не будет.

1 Ответ

0 голосов
/ 04 июня 2018

Объявите myAdapter как личную переменную и измените код, как указано ниже.

Добавьте строку myAdapter.notifyDataSetChanged(); после lstBook.add(new Book(title,"rAJA","Description book",img)); и myrv.setAdapter(myAdapter);

for(int i=0;i<jr.length();i++)
 {
    JSONObject jb1 = jr.getJSONObject(i);
    String title = jb1.getString("title");
    String img = jb1.getString("featured_src");
    JSONArray a = jb1.getJSONArray("categories");
    String category = "";
    lstBook.add(new Book(title,"rAJA","Description book",img));
    myAdapter.notifyDataSetChanged();
}

и

myAdapter = new RecyclerViewAdapter(this,lstBook);
myrv.setLayoutManager(new GridLayoutManager(this,2));
myrv.setAdapter(myAdapter);
myAdapter.notifyDataSetChanged();
...