【问题标题】:dubbel json output everytime switching activities每次切换活动时dubbel json输出
【发布时间】:2020-08-17 20:46:54
【问题描述】:

我现在面临的问题是;

在我的家庭活动中,我有一些来自 json 的输出。但这些值确实发生了变化,所以我必须保持 homeactivity 更新。

当我在 onRestart() 中添加 jsonrequest() 时

当我重新启动应用程序或在活动之间切换时,它会获取最新值。但每次我在活动之间切换时,它都会添加更多字段。示例:在我的 json 文件中,我确实有 用户名:约翰

homeactivity 显示 John ;在活动之间切换,homeactivity 显示;约翰约翰等。

我在 onCreate() 中也有 jsonrequest()

    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) ;
    }

【问题讨论】:

    标签: java android json request duplicates


    【解决方案1】:

    lstUser 中的值每次都会加倍,因为您每次都在 lstUser 中添加新值,但您不会从该数组中删除旧值。

    所以在lstUser 中添加User 之前,请删除该数组中可用的旧值。如:

       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);
        }
    

    【讨论】:

    • @kjmb 欢迎,如果有帮助可以采纳
    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2015-04-26
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多