Android 如何在片段内部的CardView上实现SwipeRefreshLayout?
RecentNewsFragment.javaAndroid 如何在片段内部的CardView上实现SwipeRefreshLayout?,android,swiperefreshlayout,cardview,Android,Swiperefreshlayout,Cardview,RecentNewsFragment.java 如您所见,这是我为CardView构建的代码。不幸的是,我的布局不起作用。它可以工作,但仅限于动画,不会刷新视图。我是不是把setOnRefreshListener放错地方了,还是我只是错过了什么?谢谢您的帮助。您的回调方法放错了位置。您应该在onRefresh方法中创建一个新请求,而不是相反 private static final String NEWS_URL = "http://192.168.0.29/theflare/app/news.
如您所见,这是我为CardView构建的代码。不幸的是,我的布局不起作用。它可以工作,但仅限于动画,不会刷新视图。我是不是把setOnRefreshListener放错地方了,还是我只是错过了什么?谢谢您的帮助。您的回调方法放错了位置。您应该在onRefresh方法中创建一个新请求,而不是相反
private static final String NEWS_URL = "http://192.168.0.29/theflare/app/news.php";
private SwipeRefreshLayout mSwipeRefreshLayout;
private RecyclerView mRecyclerView;
@Override
public view onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// ...
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
loadNews();
}
});
return view;
}
private void loadNews() {
StringRequest request = new StringRequest(Request.Method.GET, URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
ArrayList<News> newsList = new JsonConverter<News>().toArrayList(response, News.class);
NewsArticleAdapter adapter = new NewsArticleAdapter(getActivity(), newsList);
mRecyclerView.setAdapter(adapter);
mSwipeRefreshLayout.setRefreshing(false);
}
});
MySingleton.getInstance(getActivity()).addToRequestQueue(request);
}
问题:您正在刷新它以显示动画,2.5秒后,您只需使用SwiperFreshLayout.setRefreshingfalse禁用动画;但onRefresh内部没有执行任何请求。所以执行请求刷新这个工作!谢谢我不得不把一条新闻放进去;在要在片段中查看的onCreateView内部。但总的来说,这是一个很大的帮助,真的!再次感谢@马修米兰达很乐意帮忙。将loadView代码放在onCreateView中是非常好的。我只是将其分开以避免重复代码,通常您最终会调用相同的代码来最初加载数据并刷新数据。片段不应阻止您这样做。
private static final String NEWS_URL = "http://192.168.0.29/theflare/app/news.php";
private SwipeRefreshLayout mSwipeRefreshLayout;
private RecyclerView mRecyclerView;
@Override
public view onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// ...
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
loadNews();
}
});
return view;
}
private void loadNews() {
StringRequest request = new StringRequest(Request.Method.GET, URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
ArrayList<News> newsList = new JsonConverter<News>().toArrayList(response, News.class);
NewsArticleAdapter adapter = new NewsArticleAdapter(getActivity(), newsList);
mRecyclerView.setAdapter(adapter);
mSwipeRefreshLayout.setRefreshing(false);
}
});
MySingleton.getInstance(getActivity()).addToRequestQueue(request);
}