使用PullToRefreshScrollView

来源:互联网 发布:微店淘宝快速搬家 编辑:程序博客网 时间:2024/06/06 09:10



//PullToRefreshScrollView布局文件

<com.handmark.pulltorefresh.library.PullToRefreshScrollView    xmlns:ptr="http://schemas.android.com/apk/res-auto"    android:id="@+id/refresh_scroll_view"    android:layout_width="match_parent"    android:layout_height="match_parent"    ptr:ptrAnimationStyle="flip"    ptr:ptrDrawable="@drawable/default_ptr_flip"    ptr:ptrHeaderBackground="#383838"    ptr:ptrHeaderTextColor="#FFFFFF">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <android.support.v4.view.ViewPager            android:id="@+id/spv"            android:layout_width="match_parent"            android:layout_height="200dp">        </android.support.v4.view.ViewPager>        <com.example.wanghao0211.fragment.BaseListView            android:id="@+id/slv"            android:layout_width="match_parent"            android:layout_height="match_parent">        </com.example.wanghao0211.fragment.BaseListView>    </LinearLayout></com.handmark.pulltorefresh.library.PullToRefreshScrollView>

//BaseListView自定义控件

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







//Fragment3界面

public class FraGment3 extends Fragment {   Handler h=new Handler(){        @Override        public void handleMessage(Message msg) {            if(msg.what==0){                spv.setCurrentItem(spv.getCurrentItem()+1);                h.sendEmptyMessageDelayed(0,1000);            }        }    };    private View view;    private PullToRefreshScrollView pulllist;    int pid=1;    BaseList base;    List<MyDeteBean.ResultsBean> results=new ArrayList<>();    private ILoadingLayout loadingLayoutProxy;    private ViewPager spv;   private BaseListView lv;    @Nullable @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = inflater.inflate(R.layout.fragment3,container,false);        pulllist = view.findViewById(R.id.refresh_scroll_view);      lv = view.findViewById(R.id.slv);        spv = view.findViewById(R.id.spv);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        sta();        lunbuo();        h.sendEmptyMessageDelayed(0,1000);        lv.setFocusable(false);
//设置刷新方式
pulllist.setMode(PullToRefreshBase.Mode.BOTH);
//设置刷新
loadingLayoutProxy = pulllist.getLoadingLayoutProxy(true, false);
      loadingLayoutProxy.setPullLabel("下拉刷新");
        loadingLayoutProxy.setRefreshingLabel("正在拉");
        loadingLayoutProxy.setReleaseLabel("放开刷新");
        ILoadingLayout load = pulllist.getLoadingLayoutProxy(false, true);
        load.setPullLabel("上拉刷新");
        load.setRefreshingLabel("正在加载");
        load.setReleaseLabel("放开刷新");
      pulllist.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
                sta();
            }           
    @Override 
           public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {    
            pid++;
                xrefalsh();
            } 
       });
    }
    public  void sta(){
        String path="http://gank.io/api/data/Android/10/"+pid;
        NetWorkUrl.newUrl(getActivity(), path, new NetPort() { 
           @Override
            public void port(String json) {
                Gson gson =new Gson();
                MyDeteBean bean = gson.fromJson(json, MyDeteBean.class);
                results.addAll(bean.getResults());
                if(base==null){ 
                   base=new BaseList(getActivity(),results);
                  lv.setAdapter(base);
                }else{
                    base.notifyDataSetChanged();
                }
                pulllist.onRefreshComplete();
            }    
    }); 
   }
public  void xrefalsh(){
        pid--;
        String path="http://gank.io/api/data/Android/10/"+pid; 
       NetWorkUrl.newUrl(getActivity(), path, new NetPort() {
            @Override
            public void port(String json) { 
               Gson gson =new Gson();
               if(json!=null){   
                 results.clear();
                    MyDeteBean bean = gson.fromJson(json, MyDeteBean.class); 
                   results.addAll(0,bean.getResults());  
                  if(base==null){  
                      base=new BaseList(getActivity(),results);
                        lv.setAdapter(base); 
                   }else{ 
                       base.notifyDataSetChanged();
                    }
}else{ 
               }
                pulllist.onRefreshComplete();
                loadingLayoutProxy.setLastUpdatedLabel("上次刷新时间"+new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis()))+";");
            }
        });
    }
public void lunbuo(){ 
   String path="http://gank.io/api/data/Android/10/"+pid;
    NetWorkUrl.newUrl(getActivity(), path, new NetPort() { 
       @Override
        public void port(String json) {
            Gson gson =new Gson();
            if(json!=null) {
                MyDeteBean bean = gson.fromJson(json, MyDeteBean.class);
                results.addAll(0, bean.getResults());
                ViewBasePager viewPagerAdapter = new ViewBasePager(getActivity(), results);
                spv.setAdapter(viewPagerAdapter); 
           }  
      }
    });
}
}






//Viewpager适配器

 extends PagerAdapter {    List<MyDeteBean.ResultsBean> results;    Context context;    public ViewBasePager(Context context, List<MyDeteBean.ResultsBean> results) {        this.context = context;        this.results=results;    }    @Override    public int getCount() {        return Integer.MAX_VALUE;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        ImageView img=new ImageView(context);        if(results.get(position% results.size()).getImages()!=null) {            img.setScaleType(ImageView.ScaleType.FIT_XY);            ImageLoader.getInstance().displayImage(results.get(position % results.size()).getImages().get(0), img, ImgHorder.dis());        }else{            img.setImageResource(R.mipmap.ic_launcher);        }container.addView(img);        return img;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {       container.removeView((View) object);    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view==object;    }}

原创粉丝点击