Android Studio 实现上拉加载和下拉刷新


public class Frag_01 extends Fragment implements XListView.IXListViewListener{

    private String path = "http://www.xieast.com/api/news/news.php?page=";
    private XListView xlistview;
    private int num = 1;
    private List<Beans.DataBean> data = new ArrayList<>();
    private MyAdapter myAdapter;
    private Handler handler;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.frag_01,container,false);
        //控件
        xlistview = view.findViewById(R.id.xlistview);
        //方法
        getData(1);

        handler = new Handler();
        xlistview.setPullRefreshEnable(true);
        xlistview.setPullLoadEnable(true);
        xlistview.setXListViewListener(this);
        return view;
    }
    //时间
    private void getTime() {
        xlistview.stopRefresh();//停止刷新
        xlistview.stopLoadMore();//停止加载更多
        SimpleDateFormat dateFormat = new SimpleDateFormat("mm:ss");//设置日期显示格式
        Date date = new Date(System.currentTimeMillis()); //获取当前时间
        String format = dateFormat.format(date);// 将时间装换为设置好的格式
        xlistview.setRefreshTime(format);//设置时间*/
    }

    private void getData(int num) {

        new AsyncTask<String, Integer, List<Beans.DataBean>>() {
            @Override
            protected List<Beans.DataBean> doInBackground(String... strings) {

                try {
                    URL url = new URL(strings[0]);
                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                    urlConnection.setConnectTimeout(5000);
                    urlConnection.setRequestMethod("GET");
                    byte[] bytes = new byte[1024];
                    int len = 0;
                    if(urlConnection.getResponseCode()==200){
                        InputStream inputStream = urlConnection.getInputStream();
                        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
                        while ((len=inputStream.read(bytes))!=-1){
                            outputStream.write(bytes,0,len);
                        }
                        String json = outputStream.toString();
                        inputStream.close();
                        outputStream.close();

                        //解析数据
                        Gson gson = new Gson();
                        Beans beans = gson.fromJson(json, Beans.class);

                        return beans.getData();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

                return null;
            }

            @Override
            protected void onPostExecute(List<Beans.DataBean> dataBeans) {
                super.onPostExecute(dataBeans);
                data.addAll(dataBeans);

                //适配器
                myAdapter = new MyAdapter(getActivity(), (List<Beans.DataBean>) data);
                xlistview.setAdapter(myAdapter);
                //适配器
                myAdapter.notifyDataSetChanged();
            }
        }.execute(path+num);

    }

    @Override
    public void onRefresh() {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                num = 1;
                data.clear();
                getData(1);
                getTime();
            }
        },3000);
    }

    @Override
    public void onLoadMore() {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                num++;
                getData(num);
                getTime();
            }
        },3000);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43936560/article/details/85773425