1. package com.example.lenovo.tablayout;
  2.  
  3. /**
    * Created by lenovo on 2018/7/18.
    */
  4.  
  5. import android.os.AsyncTask;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.support.v4.view.ViewPager;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Toast;
  6.  
  7. import com.bawei.jane.mxlistview.view.XListView;
    import com.google.gson.Gson;
  8.  
  9. import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
  10.  
  11. /**
    * 1. 类的用途
    * 2. @author forever
    * 3. @date 2018/7/18 11:37
    */
  12.  
  13. public class Tab0Fragment extends Fragment {
    @Nullable
  14.  
  15. private List<String> picUrl;
    private XListView xlv;
    private int pageIndex=1;//第一页的数据
    private String urlpart="http://www.93.gov.cn/93app/data.do?channelId=0&startNum=";
  16.  
  17. private String url =urlpart + pageIndex;
  18.  
  19. private MyAdapter adapter;
    private List<Result.DataBean> data = new ArrayList<>();
    private int operType = 1;
    private ViewPager viewpage;
  20.  
  21. private Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
    super.handleMessage(msg);
    int index = viewpage.getCurrentItem();
    index++;
    viewpage.setCurrentItem(index);
    sendEmptyMessageDelayed(0,2000);
    }
    };
  22.  
  23. public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = View.inflate(getActivity(), R.layout.tab0, null);
    //
  24.  
  25. picUrl = new ArrayList<>();
  26.  
  27. xlv = view.findViewById(R.id.xlv);
    viewpage = view.findViewById(R.id.vp);
  28.  
  29. if (NetUtils.isConn(getActivity())) {
    initData();
    MyTask myTask = new MyTask();
    myTask.execute(url);
  30.  
  31. Toast.makeText(getActivity(), "有网络", Toast.LENGTH_SHORT).show();
    //设置适配器
    viewpage.setAdapter(new MyPagerAdapter(picUrl, getActivity()));
    //设置默认显示页面
    viewpage.setCurrentItem(picUrl.size() * 10);
    //发消息
    handler.sendEmptyMessage(0);
  32.  
  33. } else {
    NetUtils.openDg(getActivity());
    }
    xlv.setPullRefreshEnable(true);
    xlv.setPullLoadEnable(true);
    xlv.setXListViewListener(new XListView.IXListViewListener() {
    @Override
    public void onRefresh() {
  34.  
  35. pageIndex = 1;
    url = urlpart + pageIndex;
    //重新赋值
    operType = 1;
    MyTask myTask = new MyTask();
    myTask.execute(url);
  36.  
  37. }
  38.  
  39. @Override
    public void onLoadMore() {
    // 页数增加
    pageIndex++;
    url = urlpart + pageIndex;
    // 重新赋值
    operType = 2;
    Toast.makeText(getActivity(), "加载更多", Toast.LENGTH_SHORT).show();
    MyTask task = new MyTask();
    task.execute(url);
  40.  
  41. }
  42.  
  43. });
    return view;
    }
  44.  
  45. private void initData() {
    picUrl.add("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=353970577,2929946804&fm=200&gp=0.jpg");
    picUrl.add("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3382711420,562977377&fm=27&gp=0.jpg");
    picUrl.add("https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2267393344,4258926851&fm=27&gp=0.jpg");
    picUrl.add("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1211379323,1253125292&fm=27&gp=0.jpg");
    picUrl.add("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1132229679,4204511222&fm=27&gp=0.jpg");
    }
  46.  
  47. class MyTask extends AsyncTask<String,Void,String> {
    @Override
    protected String doInBackground(String... strings) {
    StringBuilder builder = new StringBuilder();
    try {
    URL url = new URL(strings[0]);
    HttpURLConnection c = (HttpURLConnection) url.openConnection();
    c.setRequestMethod("GET");
    c.setReadTimeout(5000);
    c.setConnectTimeout(5000);
    if (c.getResponseCode()==200){
    InputStream inputStream = c.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    String str;
    while ((str=reader.readLine())!=null){
    builder.append(str);
    }
    reader.close();
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    return builder.toString();
    }
  48.  
  49. @Override
    protected void onPostExecute(String s) {
    Gson gson = new Gson();
    Result result = gson.fromJson(s, Result.class);
  50.  
  51. if (operType==1){
    data.clear();
    }
    data.addAll(result.getData());
    setAdapter();
    //关闭头尾布局
    if (operType ==1){
    xlv.stopRefresh();
    Date date = new Date(System.currentTimeMillis());//获取当前时间
    SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//格式化时间
    String refreShTime = sf.format(date);
    xlv.setRefreshTime(refreShTime);//设置刷新时间
    }else {
    xlv.stopLoadMore();//关闭尾布局
  52.  
  53. }
  54.  
  55. }
    }
    public void setAdapter(){
    if (adapter==null){
    adapter = new MyAdapter(data,getActivity());
    xlv.setAdapter(adapter);
    }else {
    adapter.notifyDataSetChanged();
    }
    }
    }
  1. <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.widget.DrawerLayout 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"
    android:orientation="vertical">
    <LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
    android:background="#ff0000 "
    android:id="@+id/toutiao"
    android:textColor="#ffffff"
    android:gravity="center"
    android:text="今日头条C"
    android:textSize="30dp"
    android:layout_width="match_parent"
    android:layout_height="60dp" />
    <android.support.design.widget.TabLayout
    android:layout_below="@id/toutiao"
    android:id="@+id/tab"
    android:layout_width="match_parent"
    app:tabTextColor="#00ff96"
    app:tabSelectedTextColor="#ff0033"
    app:tabBackground="@color/colorPrimaryDark"
    android:layout_height="3dp"
    android:layout_weight="1"></android.support.design.widget.TabLayout>
  2.  
  3. <android.support.v4.view.ViewPager
    android:id="@+id/vp"
  4.  
  5. android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="9"></android.support.v4.view.ViewPager>
    </LinearLayout>
    <LinearLayout
    android:background="#f00"
    android:layout_gravity="start"
    android:layout_width="200dp"
    android:layout_height="match_parent"></LinearLayout>
    </android.support.v4.widget.DrawerLayout>

FragmentXlistview的更多相关文章

随机推荐

  1. JavaScript Basic Memo

    1.this 的指向 1).由 new 调用?绑定到新创建的对象. 2). 由 call 或者 apply(或者 bind)调用?绑定到指定的对象. 3). 由上下文对象调用?绑定到那个上下文对象. ...

  2. Python_Mix*re模块,元字符,量词

    模块: 模块就是一组功能的集合,你要和某个东西打交道,而这个东西本身和Python没有关系,这个东西本身就存在,Python提供了一个功能的集合,专门负责和这个东西打交道. 模块的类型: 内置模块 不 ...

  3. LeetCode 15. 3Sum 16. 3Sum Closest 18. 4Sum

    n数求和,固定n-2个数,最后两个数在连续区间内一左一右根据当前求和与目标值比较移动,如果sum<target,移动较小数,否则,移动较大数 重复数处理: 使i为左至右第一个不重复数:while ...

  4. HDU1237

    /************************************************************** 作者:陈新 邮箱:cx2pirate@gmail.com 用途:hdu1 ...

  5. 关于JS 的cookie 操作 与 json 的数据结构 问题

    今天写了一个购物车,由于购物车内容是保存在 cookie中 所以不想浪费服务器资源做cookie的操作 故在前端封装了一些对象来处理购物车,由于cookie的数据结构的设计是一个json格式 使用 账 ...

  6. webdriver的三种时间等待( sleep(); implicitly_wait(); WebDriverWait();)

    https://blog.csdn.net/HeatDeath/article/details/71774572 基于<Selenium 2自动化测试实战>的学习笔记(11)—— 设置等待 ...

  7. java static关键字的使用

    static关键字    通常来说,创建类的时候,是用new创建此类的对象才可以获得,执行new创建对象时数据存储空间才被分配,其方法才被外界调用    有两种情况用new无法解决:        1 ...

  8. 汉诺塔I

    题目描述 对于传统的汉诺塔游戏我们做一个拓展,我们有从大到小放置的n个圆盘,开始时所有圆盘都放在左边的柱子上,按照汉诺塔游戏的要求我们要把所有的圆盘都移到右边的柱子上,请实现一个函数打印最优移动轨迹. ...

  9. redis总结(一)的持久化的取舍和选择以及作用

    1.redis持久化 在客户端发布save的过程中有可能造成阻塞,如一千万条数据同时保存并生成二进制RDB文件的时候,此时就会延迟堵塞. 文件策略是如果存在老的RDB文件,会用新的文件替代老的文件如下 ...

  10. 斐讯K2 22.5.9固件刷华硕固件实测教程

    斐讯K2最新的固件是V22.5.9.163这个版本是锁死了,不能刷机的,而且不能降级到原来的可以刷机的老版本固件,也就不能刷第三方固件了,怎么破呢?下面就教大家怎么降级刷机到V22.4.2.8固件.  ...