如何刷新 ListView 中的数据?(json&http)

Posted

技术标签:

【中文标题】如何刷新 ListView 中的数据?(json&http)【英文标题】:How do I refresh the data in the ListView?(json&http) 【发布时间】:2016-02-19 07:59:39 【问题描述】:

首先,活动中有一个名为“user”的列表视图。在活动类中,我有一个每 10 秒运行一次的线程。该线程调用一个执行 AsyncTask 的函数。 AsyncTask 执行 http 请求,响应由名为 JSONparse 的类解析。然后,数据将在带有简单适配器的 for 循环内的列表视图中使用。

这里的实际问题是旧数据保留在 listview 中,并且每 10 秒添加一次相同的元素。

onPostExecute 在 JSONparse 类中:

private static final String TAG_OS = "istekler";
private static final String TAG_VER = "isim";
private static final String TAG_NAME = "istek";
private static final String TAG_API = "mesaj";

 protected void onPostExecute(JSONObject json) 
        try 
            // Getting JSON Array from URL
            android = json.getJSONArray(TAG_OS);
            for(int i = 0; i < android.length(); i++)
                JSONObject c = android.getJSONObject(i);

                // Storing  JSON item in a Variable
                String isim = c.getString(TAG_VER);
                String mesaj = c.getString(TAG_NAME);
                String istek = c.getString(TAG_API);

                // Adding value HashMap key => value

                HashMap<String, String> map = new HashMap<String, String>();

                map.put(TAG_VER, isim);
                map.put(TAG_NAME, mesaj);
                map.put(TAG_API, istek);

                oslist.add(map);
                list=(ListView)findViewById(R.id.list);

                ListAdapter adapter = new SimpleAdapter(user.this, oslist,
                        R.layout.list_v,
                        new String[]  TAG_VER,TAG_NAME, TAG_API , new int[] 
                        R.id.isim,R.id.mesaj, R.id.istek);

                list.setAdapter(adapter);
                list.setOnItemClickListener(new AdapterView.OnItemClickListener() 

                    @Override
                    public void onItemClick(AdapterView<?> parent, View view,
                                            int position, long id) 
                        Toast.makeText(user.this, "Parça: "+oslist.get(+position).get("istek"), Toast.LENGTH_SHORT).show();

                    
                );

            

         catch (JSONException e) 
            e.printStackTrace();
        



    

【问题讨论】:

我认为您需要清除您的列表。尝试在 oslist.add() 之前调用 oslist.clear() 非常感谢!你拯救了我的一天。我为自己如此愚蠢而感到非常尴尬:D 我把它作为答案,所以你可以标记为已解决 【参考方案1】:

在您的代码中,您只需将新元素添加到您的列表中。您应该调用 oslist.clear() 来删除旧数据。

【讨论】:

以上是关于如何刷新 ListView 中的数据?(json&http)的主要内容,如果未能解决你的问题,请参考以下文章

无法刷新 Spinner 所选项目的 ListView 以从 url 获取新数据

C# 刷新另一个窗体的listview

如何动态刷新 ListView?

想要在不刷新 Activity 的情况下更新 Android 中的 Listview

每 2 秒刷新一次从 JSON 响应中填充的 listView

ListView如何刷新?