Xlistview上拉、下拉

来源:互联网 发布:万达网络信贷公司 编辑:程序博客网 时间:2024/04/28 04:26
《Xlistview 导包 里面的view文件夹,头和尾的布局,复制string里面的 上拉、下拉刷新》<---布局--->    <?xml version="1.0" encoding="utf-8"?>    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"        xmlns:tools="http://schemas.android.com/tools"        android:layout_width="match_parent"        android:layout_height="match_parent">        <com.example.a08_xlistview_demo.view.XListView            android:id="@+id/xListView"            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:cacheColorHint="#00000000">        </com.example.a08_xlistview_demo.view.XListView>    </RelativeLayout><----主页面----->package com.example.a08_xlistview_demo;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.Toast;import com.example.a08_xlistview_demo.bean.DataDataBean;import com.example.a08_xlistview_demo.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.URL;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 List<DataDataBean.ResultsBean> list = new ArrayList<>();    private int NUM = 10;    private MyAdapter myAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        xListView = (XListView) findViewById(R.id.xListView);        //设置        //设置下拉和上拉可用....如果false不可用        xListView.setPullRefreshEnable(true);        xListView.setPullLoadEnable(true);        //设置监听事件        xListView.setXListViewListener(this);        getDataFromNet();    }    /**     * 刚开始的时候获取网络上的数据...添加到list集合,,,设置适配器     */    private void getDataFromNet() {        AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {            @Override            protected String doInBackground(Void... voids) {                String path = "http://gank.io/api/data/Android/10/"+NUM;                try {                    URL url = new URL(path);                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();                    //设置                    connection.setRequestMethod("GET");                    connection.setReadTimeout(5000);                    connection.setConnectTimeout(5000);                    //获取                    int responseCode = connection.getResponseCode();                    if (responseCode == 200){                        InputStream inputStream = connection.getInputStream();                        String json = streamToString(inputStream,"utf-8");                        return json;                    }                } catch (Exception e) {                    e.printStackTrace();                }                return "";            }            @Override            protected void onPostExecute(String json) {                Gson gson = new Gson();                DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);                //dataDataBean.getResults();                //将这次的十条数据添加到集合                list.addAll(dataDataBean.getResults());                setAdapter();                //数据加载展示完之后...停止                xListView.stopLoadMore();            }        };        asyncTask.execute();    }    /**     * 设置适配器的方法     */    private void setAdapter() {        if (myAdapter == null){            myAdapter = new MyAdapter(MainActivity.this,list);            xListView.setAdapter(myAdapter);        }else {            myAdapter.notifyDataSetChanged();        }    }    private String streamToString(InputStream inputStream,String charset) {        try {            InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset);            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);            String s = null;            StringBuilder builder = new StringBuilder();            while ((s = bufferedReader.readLine()) != null){                builder.append(s);            }            bufferedReader.close();            return builder.toString();        } catch (Exception e) {            e.printStackTrace();        }        return  null;    }    /**     * 下拉的时候调用的...刷新     */    @Override    public void onRefresh() {        NUM --;        if (NUM >0){            //获取数据            refreshData();        }else {            Toast.makeText(MainActivity.this,"没有最新数据了",Toast.LENGTH_SHORT).show();            xListView.stopRefresh();//停止刷新        }    }    /**     * 刷新数据     */    private void refreshData() {        AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {            @Override            protected String doInBackground(Void... voids) {                String path = "http://gank.io/api/data/Android/10/"+NUM;                try {                    URL url = new URL(path);                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();                    //设置                    connection.setRequestMethod("GET");                    connection.setReadTimeout(5000);                    connection.setConnectTimeout(5000);                    //获取                    int responseCode = connection.getResponseCode();                    if (responseCode == 200){                        InputStream inputStream = connection.getInputStream();                        String json = streamToString(inputStream,"utf-8");                        return json;                    }                } catch (Exception e) {                    e.printStackTrace();                }                return "";            }            @Override            protected void onPostExecute(String json) {                Gson gson = new Gson();                DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);                //dataDataBean.getResults();                //数据要添加到集合的最前边                list.addAll(0,dataDataBean.getResults());                setAdapter();                //停止刷新                xListView.stopRefresh();                //设置本次刷新的时间                Date date = new Date(System.currentTimeMillis());                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");                String time = simpleDateFormat.format(date);                xListView.setRefreshTime(time);            }        };        asyncTask.execute();    }    /**     * 上拉的时候调用的....加载     */    @Override    public void onLoadMore() {        NUM ++;        //请求网络获取数据        getDataFromNet();    }}<----适配器---->package com.example.a08_xlistview_demo;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.example.a08_xlistview_demo.bean.DataDataBean;import java.util.List;/** * @author Dash * @date 2017/9/7 * @description: */public class MyAdapter extends BaseAdapter {    Context context;    List<DataDataBean.ResultsBean> list;    public MyAdapter(Context context, List<DataDataBean.ResultsBean> list) {        this.context = context;        this.list = list;    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int i) {        return list.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(int i, View view, ViewGroup viewGroup) {        if (view == null){            view = View.inflate(context,R.layout.list_item,null);        }        TextView textView = view.findViewById(R.id.list_item_textview);        //设置        textView.setText(list.get(i).getDesc());        return view;    }}