我尝试将SwipeRefreshLayout
与ListView一起使用。
当我第一次尝试加载数据时,ListView和ArrayAdapter运行良好。
但是,当我尝试刷新时 - 我有空ListView(但数组有数据)。
这里有一些代码:
MainActivity:
final SwipeRefreshLayout swipe= (SwipeRefreshLayout) findViewById(R.id.swipe);
_loader=new RssLoader(getApplicationContext(),this,swipe);
swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
_loader.loadFeeds();
}
});
Loader class:
public void loadFeeds() {
String[] urlArr = {"http://www.example.com/export/news.xml"};
new RssReader(_context)
.showDialog(false)
.urls(urlArr)
.parse(new OnRssLoadListener() {
@Override
public void onSuccess(List<RssItem> rssItems) {
ArrayList<String> titles=new ArrayList<>();
if(rssItems.size()!=0)
{
titles.clear();
RssItems.clear();
}
Toast.makeText(_context, rssItems.get(0).getTitle(), Toast.LENGTH_SHORT).show();
for (RssItem item:rssItems
) {
RssItems.add(item);
titles.add(item.getTitle());
Log.i("Item:",item.getTitle());
}
ArrayAdapter<String> adapter=new ArrayAdapter<String>(_context,R.layout.support_simple_spinner_dropdown_item,titles);
ListView listNewNews= (ListView) _activity.findViewById(R.id.listViewNews);
listNewNews.setAdapter(adapter);
if(_swipeRefresh!=null) {
_swipeRefresh.setRefreshing(false);
}
}
@Override
public void onFailure(String message) {
Toast.makeText(_context, "Error: "+message, Toast.LENGTH_SHORT).show();
}
});
}