public class PullFragment extends Fragment { private PullToRefreshListView plv_news; private List<News.DataBean> list; private MyBaseAdapter adapter; private int page =1; private boolean isLoadMore = false; private static final String url = "http://www.xieast.com/api/news/news.php?page="; private Handler handler = new Handler(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_pull, container, false); plv_news = view.findViewById(R.id.plv_news); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); list = new ArrayList<>(); plv_news.setMode(PullToRefreshBase.Mode.BOTH); plv_news.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { isLoadMore = false; page = 1; getData(page); handler.postDelayed(new Runnable() { @Override public void run() { // 停止刷新或者加载更多 plv_news.onRefreshComplete(); } }, 2000); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { isLoadMore = true; page++; getData(page); handler.postDelayed(new Runnable() { @Override public void run() { plv_news.onRefreshComplete(); } }, 2000); } }); adapter = new MyBaseAdapter(list,getActivity()); plv_news.setAdapter(adapter); } private void getData(int page) { new AsyncTask<String, Integer, String>() { @Override protected String doInBackground(String... strings) { return HttpUtils.getStringFromHttp(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); News news = gson.fromJson(s, News.class); if (news != null) { List<News.DataBean> data = news.getData(); if (data != null) { if (!isLoadMore) { list.clear(); } } list.addAll(data); adapter.notifyDataSetChanged(); } } }.execute(url+page); } }