gpt4 book ai didi

java - 每次切换 Activity 时 dubbel json 输出

转载 作者:行者123 更新时间:2023-12-01 16:56:53 25 4
gpt4 key购买 nike

我现在面临的问题是;

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

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

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

主页 Activity 显示约翰;在 Activity 之间切换,主页 Activity 显示;约翰约翰等..

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

最佳答案

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

关于java - 每次切换 Activity 时 dubbel json 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61575060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com