1,需求: 首页,第一次请求所有数据,但是后台没有进行分页,只能前端来做了。每滑动一次viewpage 就加载6条数据。
2,主页代码。

public class MainActicity extends BaseActivity{    public static List sList=new ArrayList<>();//進來把數據放在全局。    public static int sPage=0;//全局 页数,等于 viewpage的下标。    public static int sPageSize=6;//每頁取出的數量、    private List lista; //網絡請求后的數據。    private ViewPager vp;    private MainFragmentAadapter mAdapter;    private List list;// Fragmeng 的數量    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity1_main);        initView();        vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                sPage=position;                Log.e("", "onPageScrolled: 这是ViewPage的第"+position );            }            @Override            public void onPageSelected(int position) {                Log.e("", "onPageScrolled: 这是ViewPage的第2222"+position );            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    /*http://192.168.2.250:8888/svn/wisdom_hotel/apk*/    private void initView() {        lista=new ArrayList<>();        for (int i = 0; i <28 ; i++) {            if (i%sPageSize==0||i%(sPageSize+sPage)==3){//相隔4个,每一页 这个就要加1、                lista.add(new TestItem(1,"王小明"+i));            }else{                lista.add(new TestItem(2,"王小明"+i));            }        }        sList=lista;//存贮到全局。        vp= (ViewPager) findViewById(R.id.viewpage);        //根据总页数 确定循环的次数。        list=new ArrayList<>();//這個傳到 適配器裏面。 告訴適配器要生成幾個 Fragment.        //        int  page=sList.size()/sPageSize;//頁數=sList/每頁抓取的數據、        if (sList.size()%sPageSize!=0){//說明還有多的。            page=page+1;        }        for (int i = 0; i //頁數、            list.add(i);        }        mAdapter=new MainFragmentAadapter(getSupportFragmentManager(),list);        vp.setAdapter(mAdapter);    }

3,

public class MainFragment extends BaseFragment {    private RecyclerView reView;    private MainAdapter adapter;    private TextView tvName;    private int pageaaa;//根據 分析出來的椰樹。    private List list;//这个是临时  数据。 全局数据    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_main, container, false);        initView(view);        return view;    }    //初始化。    private void initView(View view) {        pageaaa = getArguments().getInt("list");        getPageDate(pageaaa);        reView = view.findViewById(R.id.rectvle_view);        adapter = new MainAdapter(list);        StaggeredGridLayoutManager linearLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.HORIZONTAL);        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);        reView.setLayoutManager(linearLayoutManager);        reView.setAdapter(adapter);    }    public static Fragment getFragment(Bundle bundle) {        //核心 这里写个全局方法。在适配器那边调用。        MainFragment oneFragment = new MainFragment();        oneFragment.setArguments(bundle);        return oneFragment;    }    /**     * 每页取6个数据。     *     * @param page viewpage 的第几页     */    public void getPageDate(int page) {        list = new ArrayList<>();        int s = page * sPageSize;//每页开始取数据的标记。 页数*数量、        if ((sList.size() - s) < sPageSize && (sList.size() - s) > 0) {//如果最后一页 要获取的数量,小于6或者 大于0 说明 有数据、但是 是多少?            for (int i = s; i < sList.size() - s; i++) {                list.add(sList.get(i));            }        } else {            for (int i = s; i < s + sPageSize; i++) {                list.add(sList.get(i));            }        }    }}

4, Fragment Adapter 适配器

public class MainFragmentAadapter extends FragmentPagerAdapter{    List list;    public MainFragmentAadapter(FragmentManager fm,List list) {        super(fm);        this.list=list;    }    @Override    public Fragment getItem(int position) {        Bundle bundle=new Bundle();        bundle.putInt("list",list.get(position));        return MainFragment.getFragment(bundle);//直接调用Fragment中的全局方法    }    @Override    public int getCount() {        return list.size();    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {//        super.destroyItem(container, position, object); 注释掉不会 重复加载。只加载一遍,懒加载的话,要用到。    }}

更多相关文章

  1. Android(安卓)- Intent
  2. android中gridview的上拉加载更多
  3. Android实现多参数文件和数据上传
  4. Android(安卓)小陷阱
  5. StageFright框架流程解读
  6. android广告自动滚动并用picasso实现图片加载
  7. 如何获取手机短信和通话记录信息
  8. Android(安卓)获取手机中微信聊天记录并后台发送到邮箱
  9. Android(安卓)异步加载图片-AsyncTask

随机推荐

  1. android Matrix原理
  2. Android编码规范
  3. Android中的签名机制
  4. Android初步了解入门
  5. Android(安卓)View 相关源码分析之四 Lin
  6. TextView 属性
  7. Android(安卓)Tab 选项卡的简单实现
  8. Android的logcat用法
  9. Android系列教程之八:ListView组件的使用
  10. Android初步了解入门