dubbel json вывод каждый раз при переключении активности - PullRequest
0 голосов
/ 03 мая 2020

проблема, с которой я сталкиваюсь сейчас:

в моей домашней деятельности у меня есть некоторые выходы из json. но эти значения меняются, поэтому я должен постоянно обновлять homeactivity.

когда я добавляю jsonrequest () в onRestart ()

, он получает самые последние значения при перезапуске приложения или когда Я переключаюсь между действиями. НО каждый раз, когда я переключаюсь между действиями, это добавляет больше полей. пример: в моем json файле у меня есть имя пользователя: Джон

Homeactivity показывает Джон; переключение между видами деятельности, показывает домашняя деятельность; Джон Джон и др. c ..

У меня также есть функция jsonrequest () в onCreate ()

    private void jsonrequest() {

        request = new JsonArrayRequest(JSON_URL, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                JSONObject jsonObject  = null;
                for (int i = 0 ; i < response.length(); i++ ) {
                    try {
                        jsonObject = response.getJSONObject(i);
                        User user = new User();
                        user.setUsername(jsonObject.getString("username"));
                        lstUser.add(user);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
                setuprecyclerview(lstUser);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });


        requestQueue = Volley.newRequestQueue(DashBoardActivity.this);
        requestQueue.add(request) ;
    }

. Я хотел бы посмотреть некоторые советы, спасибо заранее и оставаться в безопасности!

1 Ответ

0 голосов
/ 03 мая 2020
Значение

в lstUser удваивается каждый раз, потому что вы добавляете новое значение в lstUser каждый раз, но не удаляете старое значение из этого массива.

, поэтому перед добавлением User в lstUser, удалить старое значение, доступное в этом массиве. Как:

   public void onResponse(JSONArray response) {
        JSONObject jsonObject  = null;

        lstUser.clear(); // Here remove old value, so in new list you have only latest values.

        for (int i = 0 ; i < response.length(); i++ ) {
            try {
                jsonObject = response.getJSONObject(i);
                User user = new User();
                user.setUsername(jsonObject.getString("username"));
                lstUser.add(user);

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        setuprecyclerview(lstUser);
    }
...