XListView

来源:互联网 发布:从零开始学java.epub 编辑:程序博客网 时间:2024/05/18 00:31


public class MainActivityextends AppCompatActivity {

 

 

    private XListView xlv;

    privateint pageIndex=1;

    private  String urlpart="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=";

 

    private String url=urlpart+pageIndex;

    private MyAdapter adapter;

 

    private List<Result.DataBean> data=new ArrayList<>();

 

    //操作类型 1:刷新操作  2:加载更多的操作

    privateint operType=1;

 

    @Override

    protectedvoid onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        //查找控件

        xlv = findViewById(R.id.xlv);

 

        //xlistview进行设置

        xlv.setPullLoadEnable(true);//上拉加载更多

        xlv.setPullRefreshEnable(true);//下拉刷新

 

 

        //设置接口

        xlv.setXListViewListener(new XListView.IXListViewListener() {

            @Override

            publicvoid onRefresh() {//刷新

                //刷新时,重新请求第1页的数据

                pageIndex=1;

                url=urlpart+pageIndex;

                //重新赋值

                operType=1;

 

                MyTask myTask=new MyTask();

                myTask.execute(url);

 

            }

 

            @Override

            publicvoid onLoadMore() {//加载更多

                //页数增加

                pageIndex++;

                url=urlpart+pageIndex;

                //重新赋值

                operType=2;//加载更多

 

                Log.d("zzz","loadMore:"+url);

                MyTask task=new MyTask();

                task.execute(url);

 

            }

        });

 

 

        //进行网络请求

        MyTask myTask=new MyTask();

        myTask.execute(url);

 

 

 

    }

 

    class MyTaskextends AsyncTask<String,Void,String>{

        @Override

        protected String doInBackground(String... strings) {

 

            try {

                URL url=new URL(strings[0]);

                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

 

                urlConnection.setConnectTimeout(5000);

                urlConnection.setReadTimeout(5000);

                urlConnection.setRequestMethod("GET");

 

                if(urlConnection.getResponseCode()==200){

                    //获取数据

                    InputStream inputStream = urlConnection.getInputStream();

 

                    String s = StreamToString.streamToStr(inputStream,"utf-8");

                    Log.d("zzz","---:"+s);

                    return s;

 

 

                }

 

 

            } catch (MalformedURLException e) {

                e.printStackTrace();

            } catch (IOException e) {

                e.printStackTrace();

            }

 

 

            returnnull;

        }

 

        @Override

        protectedvoid onPostExecute(String s) {

 

            Gson gson=new Gson();

            Result result = gson.fromJson(s, Result.class);

 

            //data = result.getData();

 

            if(operType==1){//代表刷新操作

                data.clear();//清空原有的集合数据

            }

            //增加新的数据集合到原来的集合对象中

            data.addAll(result.getData());

 

            setAdapter();

 

            if(operType==1){

                xlv.stopRefresh();//关闭头布局

 

                Date date=new Date(System.currentTimeMillis());

                SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                String refreshTime = sf.format(date);

                xlv.setRefreshTime(refreshTime);//设置刷新时间

 

 

            }else{

                xlv.stopLoadMore();//关闭尾布局

            }


        }

    }

 

    publicvoid setAdapter(){

        if(adapter==null){

            adapter = new MyAdapter(data,MainActivity.this);

            xlv.setAdapter(adapter);

        }else{

            adapter.notifyDataSetChanged();

        }

 

    }

 

 

}


原创粉丝点击