首页 > 解决方案 > 在刷新刷新之前清除列表视图

问题描述

我有一个列表视图,我从 JSON 中填充它。我已应用 Swiperefresh 布局再次清除并重新填充列表视图。

但我的问题不是清除旧项目,而是在旧项目的底部添加新价值。但我想彻底清除一切,然后从头开始添加新的价值。

这是我的代码

            mSwipeRefreshLayout.post(new Runnable() {
                                         @Override
                                         public void run() {

                                             mSwipeRefreshLayout.setRefreshing(true);
                                             mExampleList.clear();
                                             mExampleAdapter.notifyDataSetChanged();
                                             parseJSON();
                                         }
                                     }
            );


        }
    }


    private void parseJSON() {
        String url = getIntent().getStringExtra(EXTRA_URL);
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {

                        myProgressBar.setVisibility(View.GONE);

                        try {
                            JSONArray jsonArray = response.getJSONArray("hits");

                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject hit = jsonArray.getJSONObject(i);
                                String videoTitle = hit.getString("title");
                                String link = hit.getString("link");
                           //     String notes = hit.getString("notes");
                          //      String question = hit.getString("question");
//                                String imageUrl = hit.getString("webformatURL");
//                                int likeCount = hit.getInt("likes");

                                mExampleList.add(new ExampleItem(videoTitle,link));
                                mExampleAdapter.notifyDataSetChanged();
                            }


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

                        mSwipeRefreshLayout.setRefreshing(false);
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
                mSwipeRefreshLayout.setRefreshing(false);
            }
        });

        mRequestQueue.add(request);
    }

谁能帮我 ?

标签: javaandroidlistviewswiperefreshlayout

解决方案


替换您的以下代码

 mSwipeRefreshLayout.post(new Runnable() {
                                         @Override
                                         public void run() {

                                             mSwipeRefreshLayout.setRefreshing(true);
                                             mExampleList.clear();
                                             mExampleAdapter.notifyDataSetChanged();
                                             parseJSON();
                                         }
                                     }
            );

updateListContent();
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
               updateListContent();
            }
        });
    }

创建一个将数据更新到列表的方法:

   public void updateListContent() {
    mSwipeRefreshLayout.setRefreshing(true);
    if(mExampleList != null)
      mExampleList.clear();
     parseJSON();
    }

推荐阅读