从Android适配器的一种写法认识静态内部类
来源:互联网 发布:mac windows分区大小 编辑:程序博客网 时间:2024/05/17 01:10
- 首先是一个Fragment的适配器类
重点看静态内部类Holder就可以了,在这里其实是Builder
模式的使用
import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.ArrayList; import java.util.List; /** * 碎片化界面适配器<br> * Copyright (c) 2016 ycuzjj@163.com. All rights reserved. */ public class ContentFragmentAdapter extends FragmentPagerAdapter { private List<Fragment> fragments = new ArrayList<>(); public ContentFragmentAdapter(FragmentManager fm, List<Fragment> fragments) { super(fm); this.fragments = fragments; } @Override public Fragment getItem(int position) { return fragments.get(position); } @Override public int getCount() { return fragments.size(); } @Override public CharSequence getPageTitle(int position) { return fragments.get(position).getTag(); } // 使用静态内部类初始化数据 public static class Holder { private final List<Fragment> fragments = new ArrayList<>(); private FragmentManager manager; public Holder(FragmentManager manager) { this.manager = manager; } public Holder add(Fragment f) { fragments.add(f); return this; } public ContentFragmentAdapter set() { return new ContentFragmentAdapter(manager, fragments); } } }
- 在Activity中的使用
/** * 初始化viewpager */ private void initViewPager() { //缓存3页避免切换时出现空指针 mViewPager.setOffscreenPageLimit(3); // 使用 mViewPager.setAdapter(new ContentFragmentAdapter.Holder(getSupportFragmentManager()) .add(IndexFragment.newInstance()) .set()); mViewPager.setCurrentItem(0); // 添加事件监听 mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { ((TabView) mTabGroup.getChildAt(position)).setChecked(true); } @Override public void onPageScrollStateChanged(int state) { } }); }
好处
- 在这里用静态内部类其实是实现了
Builder
模式,可以多次设置对象的属性而无需重新获取引用
- 在这里用静态内部类其实是实现了
阅读全文
0 0
- 从Android适配器的一种写法认识静态内部类
- 从反编译认识内部类
- 静态内部类的一些认识---->单例模式
- Service内部类的写法
- 内部类里的静态内部类
- android中常用的匿名内部类的写法
- 内部类的深度认识
- 十、内部类的认识
- 静态内部类和非静态内部类的区别
- 静态内部类和非静态内部类的区别
- 静态内部类和非静态内部类的区别
- 静态内部类和非静态内部类的区别
- 静态内部类和非静态内部类的区别
- 静态内部类和非静态内部类的区别
- 静态内部类和非静态内部类的区别
- 静态内部类和非静态内部类的区别
- 静态内部类和非静态内部类的区别
- 静态内部类和非静态内部类的区别
- C++ 学习经验集合
- 写在冬日的第一天--一个女程序员第十三年工作总结
- 编写一个学生类Students,该类成员变量包括学号no、姓名name、性别sex和年龄age,该类的成员方法有genNo()getName ). * getSex().getAge().和setA
- 文章标题
- 64位Ubuntu 16.04运行32位程序
- 从Android适配器的一种写法认识静态内部类
- Vuforia + Unity 中根据不同识别图来切换场景
- Java final关键字
- C++ 文件输入/输出(2)
- Java 实训1:编写一个窗体程序显示日历表。
- 侧边框
- [P3942]将军令
- Java实现一维数组排序(冒泡、选择、插入、Arrays类)
- Java的运算符号和判断