如何使用 SwipeRefreshLayout 在片段中成功刷新 Recyclerview

问题描述

我正在使用 jsoup 从网站获取数据到 recyclerview 中,但我不太清楚我应该如何使用 swiperefreshlayout 刷新和更新 recyclerview。有人可以帮忙解释一下我在下面的代码中的 onRefresh 中放入了哪些代码才能在下拉时刷新?

Content content = new Content();
    content.execute();

    swipeRefreshLayout.setonRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            swipeRefreshLayout.setRefreshing(false);
            //What do I put in here??
        }
    });

    return root;
}

private class Content extends AsyncTask<Void,Void,Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        progressBar.setVisibility(View.VISIBLE);
        //progressBar.startAnimation(AnimationUtils.loadAnimation(getActivity(),android.R.anim.fade_in));
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        progressBar.setVisibility(View.GONE);
        //progressBar.startAnimation(AnimationUtils.loadAnimation(getActivity(),android.R.anim.fade_out));
        adapter.notifyDataSetChanged();
    }

    @Override
    protected Void doInBackground(Void... voids) {

        try {
            String url = "https://www.mywebsite.com";

            Document doc = Jsoup.connect(url).get();

            Elements data = doc.select(".thisurl");
            int size = data.size();
            Log.d("doc","doc: " + doc);
            Log.d("data","data: " + data);
            Log.d("size","" + size);
            for (int i = 0; i < size; i++) {
                String date = doc.select(".b-time").eq(i).text();

                String league = doc.select(".card-competition-title").eq(i).text();

                String homelogo = data.select(".card-vs-left")
                        .select("img")
                        .eq(i)
                        .attr("src");

                String homeTeam = doc.select(".card-vs-left").eq(i).text();

                String awaylogo = data.select(".card-vs-right")
                        .select("img")
                        .eq(i)
                        .attr("src");

                String awayTeam = doc.select(".card-vs-right").eq(i).text();

                String pick = doc.select("span.card-our-prono").eq(i).text();

                sportyParseItems.add(new SportyParseItem(date,league,homelogo,homeTeam,awaylogo,awayTeam,pick));
                Log.d("items","img: " + homelogo + "img:" + awaylogo + " . title: " + league);
            }

        } catch (IOException e) {
            e.printstacktrace();
        }

        return null;
    }
}

解决方法

swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
    @Override
    public void onRefresh() {
        swipeRefreshLayout.setRefreshing(true);
         content.execute();
    }
});