xlistview

来源:互联网 发布:专业音频测试软件 编辑:程序博客网 时间:2024/06/05 18:43

xlistview



package animtest.com.example.e531.xlistview_demo;

import android.os.AsyncTask;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.google.gson.Gson;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import animtest.com.example.e531.xlistview_demo.view.XListView;

/**
 * 作业:在此基础上加上“多条目”显示的功能
 * 判断条目的奇偶数
 * 如果是奇数条,则展示 title(左面)与 star(右面) 字段的数据
 * 如果是偶数条,则展示图片(ImageLoader获取图片(img字段))
 *
 */
public class MainActivity extends AppCompatActivity {

    private XListView xListView;
    private MyAdapter adapter;
    private String url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1";
   //页数
    private int pageIndex=1;

    //操作的类型 1:下拉刷新  2:上拉加载
    private int type=1;



    private List<Result.DataEntity> datas=new ArrayList<>();

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

        //查找组件
        xListView = (XListView) findViewById(R.id.xlv);



        //设置支持下拉刷新
        xListView.setPullRefreshEnable(true);
        //设置支持上拉加载更多
        xListView.setPullLoadEnable(true);

        //设置刷新与加载更多的监听
        xListView.setXListViewListener(new XListView.IXListViewListener() {

            //刷新回调的接口
            @Override
            public void onRefresh() {
                type=1;
                //重新请求第一页的数据 10条数据
                pageIndex=1;
                String url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;

                new MyTask().execute(url);

            }
            //加载更多回调的接口
            @Override
            public void onLoadMore() {
                type=2;
                pageIndex++;
                //进行地址的拼接
                String url="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex;

                //执行异步请求
               new MyTask().execute(url);

            }
        });


        //执行请求
        new MyTask().execute(url);

    }

    class MyTask extends AsyncTask<String,Void,String>{
        @Override
        protected String doInBackground(String... params) {
            String result = "";
            try {
                URL url = new URL(params[0]);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setRequestMethod("GET");
                connection.setConnectTimeout(20000);
                connection.setReadTimeout(20000);
                if(connection.getResponseCode()==200){
                    InputStream inputStream=connection.getInputStream();
                    result=StreamToString.streamToStr(inputStream,"utf-8");
                }
            } catch (Exception e) {
                e.printStackTrace();
                Log.e("zzz",e.getMessage().toString());
            }
            return result;
        }


        @Override
        protected void onPostExecute(String s) {
            Log.d("zzz","data:"+s);
            //解析
            Gson gson=new Gson();
            Result result=gson.fromJson(s,Result.class);

            if(type==1){//代表刷新
                //如果是刷新的话
                datas.clear();//清除原有的数据
                datas.addAll(result.getData());//添加新的数据
                setAdapter();

                //关闭xlistview的头部视图--延迟关闭
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        xListView.stopRefresh();//关闭

                        Date date=new Date(System.currentTimeMillis());
                        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        String s=sdf.format(date);
                        xListView.setRefreshTime(s);//设置刷新时间
                    }
                },1000);



            }else if(type==2){//代表加载更多
                //得到数据
                datas.addAll(result.getData());//datas.addAll(0,result.getData());//将新请求的数据添加到集合的最前面
                //设置适配器
                setAdapter();
                //关闭xlistview的底部视图--延迟关闭
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        xListView.stopLoadMore();
                    }
                },1000);


            }else{

            }







        }
    }

    public void setAdapter() {
        if(adapter==null){
            adapter=new MyAdapter(datas,MainActivity.this);
            xListView.setAdapter(adapter);
        }else{
            adapter.notifyDataSetChanged();
        }
    }




}


原创粉丝点击