上拉加载,下拉刷新,xlistview

来源:互联网 发布:手机拨打电话软件 编辑:程序博客网 时间:2024/06/05 16:13

首先导入

        布局:xlistview_header,xlistview_footer,

         图片:xlistview_arraw.png

         res-values-strings

        代码:xlistview,xlistviewfooter,xlistviewheader

可到全球代码库中复制


布局:

<com.example.day10.view.XListView
        android:id="@+id/xlistview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></com.example.day10.view.XListView>


代码:

            package com.example.day10;

import android.content.Context;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.example.day10.Adapter.Myadapter;
import com.example.day10.bean.Databean;
import com.example.day10.view.XListView;
import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {

    private XListView xlistview;
    private int num = 10;
    private List<Databean.ResultsBean> list = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        xlistview = (XListView) findViewById(R.id.xlistview);
        xlistview.setPullLoadEnable(true);
        xlistview.setPullRefreshEnable(true);
        xlistview.setXListViewListener(this);
        getData();
    }

    private void getData() {
        AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... params) {
                String path = "http://gank.io/api/data/Android/10/" + num;
                try {
                    URL url = new URL(path);
                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                    urlConnection.setRequestMethod("GET");
                    urlConnection.setConnectTimeout(5000);
                    urlConnection.setReadTimeout(5000);

                    int responseCode = urlConnection.getResponseCode();
                    if(responseCode==200){
                        InputStream inputStream = urlConnection.getInputStream();
                        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
                        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                        StringBuilder builder = new StringBuilder();
                        String string = null;
                        while ((string=bufferedReader.readLine())!=null){
                            builder.append(string);
                        }
                        return builder.toString();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                Gson gson = new Gson();
                Databean databean = gson.fromJson(s, Databean.class);

                list.addAll(databean.getResults());
                setadapter();
                xlistview.stopLoadMore();
            }
        };
        asyncTask.execute();

    }

    private void setadapter() {
        Myadapter myadapter = new Myadapter(MainActivity.this, list);
        xlistview.setAdapter(myadapter);
    }

//上拉刷新
    @Override
    public void onRefresh() {
        num--;
        if(num>0){
            RefreshData();
        }else {
            Toast.makeText(MainActivity.this,"没有更多数据了",Toast.LENGTH_SHORT).show();
        }
    }

    private void RefreshData() {
        AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... params) {
                String path = "http://gank.io/api/data/Android/10/" + num;
                try {
                    URL url = new URL(path);
                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                    urlConnection.setRequestMethod("GET");
                    urlConnection.setConnectTimeout(5000);
                    urlConnection.setReadTimeout(5000);

                    int responseCode = urlConnection.getResponseCode();
                    if(responseCode==200){
                        InputStream inputStream = urlConnection.getInputStream();
                        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
                        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                        StringBuilder builder = new StringBuilder();
                        String string = null;
                        while ((string=bufferedReader.readLine())!=null){
                            builder.append(string);
                        }
                        return builder.toString();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                Gson gson = new Gson();
                Databean databean = gson.fromJson(s, Databean.class);

                list.addAll(0,databean.getResults());
                setadapter();

              //时间
                Date date = new Date(System.currentTimeMillis());
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH-mm-ss");
                String format = simpleDateFormat.format(date);
                xlistview.setRefreshTime(format);

                xlistview.stopRefresh();
            }
        };
        asyncTask.execute();

    }
//下拉加载
    @Override
    public void onLoadMore() {
        num++;
        getData();
    }
}



原创粉丝点击