使用PullToRefresh进行上拉下拉刷新数据

来源:互联网 发布:java进阶书籍推荐 编辑:程序博客网 时间:2024/04/27 17:53
/**
 * 使用pullToRefresh进行下拉刷新和上拉加载
 * 1.去github上下载压缩包,解压出来,把library复制出来改名,路径最好不要有中文
 * 2.使用import moundle导进这个库文件,添加库文件的依赖
 * 3.此时左下角可能会报错,只需要点击install...去下载16版本的sdk,还需要下载19版本的buildTools
 *
 * 查看代码可以看到
 *  PullToRefreshListView可以刷新的listView控件....间接继承了LinearLayout,是一个自定义的listView
 *  PullToRefreshGridView可以刷新的GridView控件
 *  PullToRefreshExpandableListView可以刷新的二级列表控件
 *  PullToRefreshScrollView可以刷新的ScrollView控件
 *  PullToRefreshWebView可以刷新的WebView控件

 */

-------------------------------------------参考代码--------------------------------------------------------

   

private PullToRefreshListView refreshListView;List<DataDataBean.NewslistBean> newslist = new ArrayList<>();private MyAdapter myAdapter;private int  page_num=1;private ILoadingLayout startLabels;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);         //获取控件    refreshListView = (PullToRefreshListView) findViewById(R.id.refresh_list_view);     //1.获取网络数据      getDataFromNet();     //2.设置模式    refreshListView.setMode(PullToRefreshBase.Mode.BOTH);    //3.设置    startLabels = refreshListView.getLoadingLayoutProxy(true, false);    startLabels.setPullLabel("下拉刷新");    startLabels.setRefreshingLabel("正在刷新...");    startLabels.setReleaseLabel("放开刷新");    ILoadingLayout endLabels = refreshListView.getLoadingLayoutProxy(false, true);    endLabels.setPullLabel("上拉刷新");    endLabels.setRefreshingLabel("正在载入...");    endLabels.setReleaseLabel("放开刷新...");    //4.监听     refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {         @Override         public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {             //在下拉监听事件将page设置为1,重新请求网络并刷新适配器            //清空集合             newslist.clear();             getDataFromNet();             //设置刷新时间             Date date = new Date(System.currentTimeMillis());             SimpleDateFormat sdf = new SimpleDateFormat("HH:mm;ss");             String format = sdf.format(date);             startLabels.setLastUpdatedLabel("上次更新时间为:"+format);         }         @Override         public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {             //在上滑滑动监听事件将page加1,重新请求网络并刷新适配器              page_num++;               getRefreshData();         }     });}//刷新数据 private void getRefreshData() {    String path = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page="+page_num;     NetDataUtil.getData(path, MainActivity.this, new JsonCallBack() {         @Override         public void getJson(String json) {             //进行解析             Gson gson = new Gson() ;             DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);             newslist .addAll(dataDataBean.getNewslist());             //设置适配器             setAdapter();             //停止刷新             refreshListView.onRefreshComplete();         }     });}//获取数据private void getDataFromNet() {    String path = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1";    NetDataUtil.getData(path, MainActivity.this, new JsonCallBack() {        @Override        public void getJson(String json) {            //进行解析            Gson gson = new Gson() ;            DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);             newslist .addAll(0,dataDataBean.getNewslist());            //设置适配器              setAdapter();            //停止刷新            refreshListView.onRefreshComplete();        }    });}//设置适配器private void setAdapter() {    if(myAdapter==null){        myAdapter = new MyAdapter(MainActivity.this,newslist);         refreshListView.setAdapter(myAdapter);    }else{        myAdapter.notifyDataSetChanged();    }}=========================布局文件===========================
<com.handmark.pulltorefresh.library.PullToRefreshListView    xmlns:ptr="http://schemas.android.com/apk/res-auto"    android:layout_height="match_parent"    android:layout_width="match_parent"    android:id="@+id/refresh_list_view"    ptr:ptrDrawable="@drawable/default_ptr_flip"    ptr:ptrAnimationStyle="flip"    ptr:ptrHeaderBackground="#383838"    ptr:ptrHeaderTextColor="#FFFFFF"  ></com.handmark.pulltorefresh.library.PullToRefreshListView>



原创粉丝点击