我无法通过onRefresh Handler在我的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);
}
我的List有一个获取String的List,把它放在List中,然后我希望它让List替换旧的List但显然它不会工作..什么都不做。我不能完全测试它,但我很确定它不起作用。有人可以帮帮我吗? 谢谢!
答案 0 :(得分:0)
试试这个
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);
}
});