【问题标题】:Can't refresh List with drag down Refresh (mSwipeRefreshLayout)无法通过下拉刷新刷新列表 (mSwipeRefreshLayout)
【发布时间】:2015-12-31 16:17:45
【问题描述】:

我无法通过 onRefresh 处理程序在我的 UI 线程上刷新我的列表(网络线程,所以没有 UI 线程),这是我尝试过的代码:

    @Override
public void onRefresh() {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                try {
                    final SharedPreferences sharedPrefs = AktuellesActivity.this.getSharedPreferences("gemeindeMuckendorf", Context.MODE_PRIVATE);
                    List<News> newsList = Utils.getNewsFromHTML(Utils.getHTML("www.muckendorf-wipfing.at/22-0-Aktuelle+Meldungen.html"));
                    SharedPreferences.Editor edit = sharedPrefs.edit();
                    edit.putString("aktuellesList", new ObjectSaver().saveString(newsList));
                    edit.commit();
                    final List<String> headers = new ArrayList<String>();
                    for(News news : newsList)
                        headers.add(news.getHeader());
                    headers.add("Test");
                    AktuellesActivity.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run(){
                            lv.setAdapter(new ArrayAdapter(AktuellesActivity.this, android.R.layout.simple_list_item_1, headers));
                            lv.invalidate();
                        }
                    });
                } catch (Exception e) {
                    e.printStackTrace();
                }
                mSwipeRefreshLayout.setRefreshing(false);
            }
        }, 2000);
}

我有一个获取字符串的列表,将其放入列表中,然后我希望它获取列表以替换旧列表,但显然它不起作用.. 没有做任何事情。我无法准确测试它,但我很确定它不起作用。有人可以帮我吗? 谢谢!

【问题讨论】:

标签: java android multithreading list swiperefreshlayout


【解决方案1】:

试试这个

  refreshLayout = (PullRefreshLayout) getView().findViewById(R.id.swipeRefreshLayout);
refreshLayout.setOnRefreshListener(new PullRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    refreshLayout.setRefreshing(true);
                    new Handler().postDelayed(new Runnable() {

                        @Override
                        public void run() {

                        String html = "";
                                    try { 
                                        html = Utils.getHTML("http://www.muckendorf-wipfing.at/22-0-Aktuelle+Meldungen.html");
                                        List<News> news = Utils.getNewsFromHTML(html);
                                        List<String> headers = new ArrayList();
                                        for (int i = 0; i < news.size(); i++)
                                            headers.add(news.get(i).getHeader());
                                        lv.setAdapter(new ArrayAdapter(AktuellesActivity.this, android.R.layout.simple_list_item_1, headers));
                                        lv.invalidate(); 
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    } 
                                        refreshLayout.setRefreshing(false);
                        }
                    }, 2000);
                }
            });

【讨论】:

  • 这只是另一种写作方法,不是吗?圆圈为我旋转,它只是没有更新列表......
  • 已检查数据来自该 URL 吗?
  • 我发布的是正确的刷新方式,你必须把你的逻辑放在 public void run() 方法中才能在刷新后得到你想要的
猜你喜欢
  • 2012-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多