PullToRefreshScrollView的使用

来源:互联网 发布:微信种植系统源码下载 编辑:程序博客网 时间:2024/05/17 00:56

自定义ListView 

package bwei.com.zhangteng1219;        import android.content.Context;        import android.util.AttributeSet;        import android.widget.ListView;/** * Created by Zhang.T on 2017/12/19. */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);    }}
/////////////////////////////////////
Viewpager 适配器      
package bwei.com.zhangteng1219;import android.content.Context;import android.content.Intent;import android.support.v4.view.PagerAdapter;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;import bwei.com.zhangteng1219.Bean.Three;/** * Created by Zhang.T on 2017/12/19. */public class Pageadapter extends PagerAdapter {    private Context context;    private List<String> pictures;    public Pageadapter(Context context, List<String> pictures) {        this.context = context;        this.pictures = pictures;    }    @Override    public int getCount() {        return Integer.MAX_VALUE;    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view==object;    }    @Override    public Object instantiateItem(ViewGroup container, final int position) {        ImageView image=new ImageView(context);        ImageLoader.getInstance().displayImage(pictures.get(position%pictures.size()),image);        container.addView(image);        image.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                Intent intent = new Intent(context,Main2Activity.class);                String url="https://www.baidu.com";                intent.putExtra("url",url);                context.startActivity(intent);                return true;            }        });        return image;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView((View) object);    }}
//////////////////////////////////////
主页面 实现逻辑 
package bwei.com.zhangteng1219;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ScrollView;import android.widget.TextView;import android.widget.Toast;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.ILoadingLayout;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import com.handmark.pulltorefresh.library.PullToRefreshScrollView;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.utils.L;import java.util.ArrayList;import java.util.List;import bwei.com.zhangteng1219.Bean.Result;import bwei.com.zhangteng1219.Bean.Three;import bwei.com.zhangteng1219.Bean.Two;import bwei.com.zhangteng1219.Utils.MyTask;import static android.R.attr.author;import static android.R.attr.data;//Viewpager+Hanlder 实现图片轮播// 实现PuLLtoResfresh 下拉刷新 上拉加载//布局//逻辑public class MainActivity extends AppCompatActivity {    private adapter adapter;    private List<Three.DataBean> datasss=new ArrayList<>();    private  int pageIndex=5;    private List<Two.DataBean.EssayBean> datas = new ArrayList<>();    private List<Result.ResultBean.DataBean> datass=new ArrayList<>();    private List<String> pictures;    private ViewPager mVp;    private MyList mLv;    private PullToRefreshScrollView mScr;    private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            if (msg.what == 1) {                mVp.setCurrentItem(mVp.getCurrentItem() + 1);            }            handler.sendEmptyMessageDelayed(1, 2000);        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ConnectivityManager manager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);//2.得到网络信息对象        NetworkInfo networkInfo=manager.getActiveNetworkInfo();//3.进行判断        if(networkInfo!=null && networkInfo.isConnected()){            Toast.makeText(this, "已连接互联网", Toast.LENGTH_SHORT).show();        }else{            Toast.makeText(this, "mei连接互联网", Toast.LENGTH_SHORT).show();        }        initView();        LunBo();        intRefreshScrollView();    }    private void intRefreshScrollView() {        //1.设置模式        mScr.setMode(PullToRefreshBase.Mode.BOTH);        //2.通过调用getLoadingLayoutProxy方法,设置下拉刷新状况布局中显示的文字 ,第一个参数为true,代表下拉刷新        ILoadingLayout headLables = mScr.getLoadingLayoutProxy(true, false);        headLables.setPullLabel("下拉刷新");        headLables.setRefreshingLabel("正在刷新");        headLables.setReleaseLabel("松开刷新");        //2.设置上拉加载底部视图中显示的文字,第一个参数为false,代表上拉加载更多        ILoadingLayout footerLables = mScr.getLoadingLayoutProxy(false, true);        footerLables.setPullLabel("上拉加载");        footerLables.setRefreshingLabel("正在载入...");        footerLables.setReleaseLabel("松开加载更多");        //3.设置监听事件        mScr.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {            @Override            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {                addToTop();//请求网络数据,并更新listview组件                refreshComplete();//数据加载完成后,关闭header,footer            }            @Override            public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {                addToBottom();//请求网络数据,并更新listview组件                refreshComplete();//数据加载完成后,关闭header,footer            }        });    }    /**     * 刷新完成时关闭     */    public void refreshComplete() {        new Handler().postDelayed(new Runnable() {            @Override            public void run() {                mScr.onRefreshComplete();            }        }, 1000);    }    public void addToTop(){        MyTask myTask=new MyTask(new MyTask.Icallbacks() {            @Override            public void updateUiByjson(String jsonstr) {                Gson gson=new Gson();                Three three = gson.fromJson(jsonstr, Three.class);                //添加到大集合对象中                List<Three.DataBean> data = three.getData();                datasss.addAll(data);                //设置适配器                setAdapter();            }        });        myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum="+pageIndex);    }    public  void addToBottom(){        MyTask myTask=new MyTask(new MyTask.Icallbacks() {            @Override            public void updateUiByjson(String jsonstr) {                Gson gson=new Gson();                Three three = gson.fromJson(jsonstr, Three.class);                //添加到大集合对象中                List<Three.DataBean> data = three.getData();                datasss.addAll(data);                //设置适配器                setAdapter();            }        });        myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum="+pageIndex);    }    private void LunBo() {        pictures = new ArrayList<>();        MyTask myTask = new MyTask(new MyTask.Icallbacks() {            @Override            public void updateUiByjson(String jsonstr){                Gson gson = new Gson();                Three three = gson.fromJson(jsonstr, Three.class);                List<Three.DataBean> data = three.getData();                for (Three.DataBean e:data ) {                    String imageurl = e.getIMAGEURL();                    pictures.add(imageurl);                }                Pageadapter pageadapter = new Pageadapter(MainActivity.this, pictures);                mVp.setAdapter(pageadapter);                mVp.setCurrentItem(pictures.size() * 1000);                handler.sendEmptyMessageDelayed(1, 2000);            }        });        myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=1");    }    public void setAdapter(){        if(adapter==null){            adapter=new adapter();            mLv.setAdapter(adapter);        }else{            adapter.notifyDataSetChanged();        }    }    private void initView() {        mVp = (ViewPager) findViewById(R.id.vp);        mLv = (MyList) findViewById(R.id.lv);        mScr = (PullToRefreshScrollView) findViewById(R.id.Scr);    }  class adapter extends BaseAdapter{      @Override      public int getCount() {          return datasss.size();      }      @Override      public Object getItem(int position) {          return datasss.get(position);      }      @Override      public long getItemId(int position) {          return 0;      }      @Override      public View getView(int position, View convertView, ViewGroup parent) {          Viewholder holder;          if (convertView==null) {              convertView=View.inflate(MainActivity.this,R.layout.one,null);              holder=new Viewholder();              holder.one=convertView.findViewById(R.id.textView);              holder.im=convertView.findViewById(R.id.imageView);              convertView.setTag(holder);          }else {              holder=(Viewholder) convertView.getTag();          }          holder.one.setText(datasss.get(position).getTITLE());          ImageLoader.getInstance().displayImage(datasss.get(position).getIMAGEURL(),holder.im);          return convertView;      }  }   class Viewholder{       TextView one;       ImageView im;   }}
/////////////////////////////
布局  
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="bwei.com.zhangteng1219.MainActivity"    android:orientation="vertical"> <com.handmark.pulltorefresh.library.PullToRefreshScrollView     android:id="@+id/Scr"     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>       <bwei.com.zhangteng1219.MyList           android:layout_width="match_parent"           android:layout_height="match_parent"           android:id="@+id/lv">       </bwei.com.zhangteng1219.MyList>     </LinearLayout> </com.handmark.pulltorefresh.library.PullToRefreshScrollView></RelativeLayout>