PullToRefreshScrollView 整体刷新的使用

来源:互联网 发布:如何把分开的数据整合 编辑:程序博客网 时间:2024/06/06 04:32

1.布局     导入library,建立依赖,只能有一个子控件,所以建立linearlayout

<com.handmark.pulltorefresh.library.PullToRefreshScrollView    android:id="@+id/sw"    android:layout_width="match_parent"    android:layout_height="match_parent">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <android.support.v4.view.ViewPager            android:id="@+id/vp"            android:layout_width="match_parent"            android:layout_height="150dp">        </android.support.v4.view.ViewPager>        <com.example.administrator.pulltorefresh.MyList            android:id="@+id/lv"            android:layout_width="match_parent"            android:layout_height="match_parent">        </com.example.administrator.pulltorefresh.MyList>    </LinearLayout></com.handmark.pulltorefresh.library.PullToRefreshScrollView>
2.fragment中  无限轮播结合listview

private Handler handler=new Handler(){    @Override    public void handleMessage(Message msg) {        super.handleMessage(msg);        if(msg.what==1){           vp.setCurrentItem(vp.getCurrentItem()+1);        }        handler.sendEmptyMessageDelayed(1,2000);    }};private List<String> imageurl_list;@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {    View v = inflater.inflate(R.layout.scroll_layout, container, false);    sw = (PullToRefreshScrollView) v.findViewById(R.id.sw);    lv = (MyList) v.findViewById(R.id.lv);    vp = (ViewPager) v.findViewById(R.id.vp);    return v;}@Overridepublic void onActivityCreated(@Nullable Bundle savedInstanceState) {    super.onActivityCreated(savedInstanceState);    //失去焦点    lv.setFocusable(false);    //首次加载数据    getDataFromNet();    //设置下拉刷新和上拉加载    sw.setMode(PullToRefreshBase.Mode.BOTH);    //刷新    proxy = sw.getLoadingLayoutProxy(true, false);    proxy.setPullLabel("下拉刷新");    proxy.setRefreshingLabel("正在刷新");    proxy.setReleaseLabel("放开刷新");    //加载    ILoadingLayout proxy1 = sw.getLoadingLayoutProxy(false, true);    proxy1.setPullLabel("上拉加载");    proxy1.setRefreshingLabel("正在加载");    proxy1.setReleaseLabel("放开加载");    //刷新的点击事件    sw.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {        @Override        public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {            NetDataUtil.getData("http://gank.io/api/data/Android/10/1", getActivity(), new JsonCallBack() {                @Override                public void getJsonString(String json) {                    Gson gson = new Gson();                    DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);                    List<DataDataBean.ResultsBean> results = dataDataBean.getResults();                    list.addAll(results);                    setadp();                    //停止刷新                    sw.onRefreshComplete();                }            });        }        @Override        public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {            page++;            getDataFromNet();        }    });    //设置无限轮播    LunBo();}private void LunBo() {    NetDataUtil.getData("http://v3.wufazhuce.com:8000/api/reading/index/?version=3.5.0&platform=android", getActivity(), new JsonCallBack() {        @Override        public void getJsonString(String json) {            imageurl_list= new ArrayList<>();            Gson gson = new Gson();            LunBoBean lunBoBean= gson.fromJson(json, LunBoBean.class);            List<LunBoBean.DataBean.EssayBean> essay = lunBoBean.getData().getEssay();            for (LunBoBean.DataBean.EssayBean e:essay) {                List<LunBoBean.DataBean.EssayBean.AuthorBean> author= e.getAuthor();                String web_url= author.get(0).getWeb_url();                imageurl_list.add(web_url);            }            vp.setAdapter(new MyPageAdp(getActivity(),imageurl_list));            vp.setCurrentItem(imageurl_list.size()*1000);            handler.sendEmptyMessageDelayed(1,2000);        }    });}private void getDataFromNet() {    NetDataUtil.getData("http://gank.io/api/data/Android/10/" + page, getActivity(), new JsonCallBack() {        @Override        public void getJsonString(String json) {            Gson gson = new Gson();            DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);            List<DataDataBean.ResultsBean> results = dataDataBean.getResults();            list.addAll(results);            setadp();            //停止刷新            sw.onRefreshComplete();        }    });}private void setadp() {    if (adp == null) {        adp = new Myadp(getActivity(), list);        lv.setAdapter(adp);    } else {        adp.notifyDataSetChanged();    }}

3.适配器

public class MyPageAdp extends PagerAdapter{    Context context;    List<String> imageurl_list;    public MyPageAdp(Context context, List<String> imageurl_list) {        this.context=context;        this.imageurl_list=imageurl_list;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        ImageView image=new ImageView(context);        ImageLoader.getInstance().displayImage(imageurl_list.get(position%imageurl_list.size()),image, ImageLoaderUtil.getDefaultOption());        container.addView(image);        return image;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView((View) object);    }    @Override    public int getCount() {        return Integer.MAX_VALUE;    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view==object;    }}
4.自己写一个listview,在布局中代替listview

public class MyList extends ListView{    public MyList(Context context) {        super(context);    }    public MyList(Context context, AttributeSet attrs) {        super(context, attrs);    }    public MyList(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);        super.onMeasure(widthMeasureSpec, expandSpec);    }}



原创粉丝点击