pulltorefreshlistview

来源:互联网 发布:vmware安装ubuntu教程 编辑:程序博客网 时间:2024/06/05 10:20
public class Context extends Fragment {    private ViewPager vp2;    private PullToRefreshListView pull;    private List<String> list=new ArrayList<String>();    private Handler handler=new Handler();    private MyBaseAdapter adap;    private List<User.DataBean> data=new ArrayList<>();    private List<User.DataBean> listss=new ArrayList<User.DataBean>();    int index=1;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View v=inflater.inflate(R.layout.context,null);        pull= (PullToRefreshListView) v.findViewById(R.id.pull);        vp2= (ViewPager) v.findViewById(R.id.vp2);        list.add("http://pic8.nipic.com/20100701/5290458_114840036316_2.jpg");        list.add("http://pic2.nipic.com/20090424/1468853_230119053_2.jpg");        list.add("http://img3.3lian.com/2013/s1/20/d/57.jpg");        list.add("http://pic39.nipic.com/20140226/18071023_164300608000_2.jpg");        list.add("http://a0.att.hudong.com/15/08/300218769736132194086202411_950.jpg");        MyAdapter adapter=new MyAdapter(list,getActivity());        vp2.setAdapter(adapter);        initLv();        initData();        return v;    }    public void setAdapters(){        if(adap==null){            adap=new MyBaseAdapter(listss,getActivity());            pull.setAdapter(adap);        }else{            adap.notifyDataSetChanged();        }    }    public void initData(){        MyTask task=new MyTask(new MyTask.Icallbacks() {            @Override            public void updateicall(String str) {                Gson gson=new Gson();                User u=gson.fromJson(str, User.class);                data = u.getData();                listss.addAll(data);                setAdapters();            }        });        task.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");    }    public void addtoTop(){        index=1;        MyTask task=new MyTask(new MyTask.Icallbacks() {            @Override            public void updateicall(String str) {                Gson gson=new Gson();                User u=gson.fromJson(str, User.class);                data = u.getData();                listss.addAll(0,data);            }        });        task.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/"+index);    }    public void addtoBottom(){        index++;        MyTask task=new MyTask(new MyTask.Icallbacks() {            @Override            public void updateicall(String str) {                Gson gson=new Gson();                User u=gson.fromJson(str, User.class);                data = u.getData();                listss.addAll(data);            }        });        task.execute("http://api.expoon.com/AppNews/getNewsList/type/1/p/"+index);    }    public void initLv(){        //设置刷新模式 ,both代表支持上拉和下拉,pull_from_end代表上拉,pull_from_start代表下拉        pull.setMode(PullToRefreshBase.Mode.BOTH);/*这里通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别,第一个true 代表下来状态 ,第二个true 代表上拉的状态如果想区分上拉和下拉状态的不同,可以分别设置*/        ILoadingLayout startLabels = pull.getLoadingLayoutProxy(true, false);        startLabels.setPullLabel("下拉刷新");        startLabels.setRefreshingLabel("正在拉");        startLabels.setReleaseLabel("放开刷新");        ILoadingLayout endLabels = pull.getLoadingLayoutProxy(false, true);        endLabels.setPullLabel("上拉刷新");        endLabels.setRefreshingLabel("正在载入...");        endLabels.setReleaseLabel("放开刷新...");/*如果Mode设置成Mode.BOTH,需要设置刷新ListenerOnRefreshListener2,并实现onPullDownToRefresh()onPullUpToRefresh()两个方法。  如果Mode设置成Mode.PULL_FROM_STARTMode.PULL_FROM_END,需要设置刷新ListenerOnRefreshListener,同时实现onRefresh()方法。  当然也可以设置为OnRefreshListener2,但是Mode.PULL_FROM_START的时候只调用onPullDownToRefresh()方法,Mode.PULL_FROM_END的时候只调用onPullUpToRefresh()方法.  加载数据完成后 必须 调用下 onRefreshComplete() 完成关闭 header,footer视图*/        pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {            @Override            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {//下拉刷新的回调                //下拉刷新的数据,显示在listview列表的最上面                addtoTop();                handler.postDelayed(new Runnable() {                    @Override                    public void run() {                        //刷新完成,必须在异步下完成                        pull.onRefreshComplete();                        //刷新适配器                        setAdapters();                    }                },1000);            }            @Override            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {//上拉加载的回调                //加载更多的数据,添加到集合列表的最后面                addtoBottom();                handler.postDelayed(new Runnable() {                    @Override                    public void run() {                        //刷新完成,必须在异步下完成                        pull.onRefreshComplete();                        //刷新适配器                        setAdapters();                    }                },1000);            }        });    }}