ViewPager、ViewPager和Fragment组合使用的基本用法
来源:互联网 发布:网络方案的初步设计 编辑:程序博客网 时间:2024/05/22 07:56
1.ViewPager
1)ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类。
2)ViewPager类需要一个PagerAdapter适配器类给它提供数据。
3)ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。
1.1 在Activity的布局中添加一个ViewPager的控件,这个控件是在v4包中的
<android.support.v4.view.ViewPager android:id="@+id/view_pager_vp" android:layout_width="wrap_content" android:layout_height="wrap_content"> </android.support.v4.view.ViewPager>
1.2 新建一个类MyPagerAdapter继承PagerAdapter,重写四种方法
List<View> list; public MyPagerAdapter(List<View> list) { this.list = list; } public int getCount() { return list.size(); } public boolean isViewFromObject(View view, Object object) { return view == object; } public Object instantiateItem(ViewGroup container, int position) { View view = list.get(position); container.addView(view); return view; } public void destroyItem(ViewGroup container, int position, Object object) { View view = list.get(position); container.removeView(view); }
1.3 在Activity中实现的操作
声明属性 List<View> list; MyPagerAdapter adapter; private ViewPager vp; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_view_pager); 实例化 vp = (ViewPager) findViewById(R.id.view_pager_vp); 添加数据 list = new ArrayList<>(); View view1 = LayoutInflater.from(this).inflate(R.layout.viewpager_1,null); View view2 = LayoutInflater.from(this).inflate(R.layout.viewpager_2,null); list.add(view1); list.add(view2); 实例化Adapter,把数据源List通过Adapter的构造方法传给adapter adapter = new MyPagerAdapter(list); 将ViewPager和Adapter进行绑定 vp.setAdapter(adapter); }
2.ViewPager+Fragment
2.1、新建一个类继承FragmentPagerAdapter
/** * fragmentPagerAdapter的适配器 * 主要用于fragment在viewpager中显示的fragmentPagerAdapter是v4包的类 * 要实现其中的抽象方法和构造方法, * 数据源list中的泛型是fragment的类型 */public class MyFragmentPagerAdapter extends FragmentPagerAdapter { 数据源 private List<Fragment> mList; /** * 构造方法 * @param fm fragment 管理器 * @param mList 数据源 */ public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> mList) { super(fm); this.mList = mList; } /** * 得到当前的Item */ public Fragment getItem(int arg0) { return mList.get(arg0); } /** * 返回Item的个数 */ public int getCount() { return mList.size(); }}
2.2 新建一个类继承Fragment
public class MyFragment extends Fragment { private int resId; /** * 空参数的构造方法 */ public MyFragment() { } /** * 带参数的构造方法 */ public MyFragment(int resId) { // TODO Auto-generated method stub this.resId = resId; } public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.myfragment, null); ImageView tv = (ImageView) view.findViewById(R.id.iv_fragment); // 设置textView控件的内容为content tv.setImageResource(resId); return view; }}
2.3 在Activity中的代码,Activity需要继承FragmentActivity
public class FragmentViewpager extends FragmentActivity { private ViewPager vp; private List<FragmentPager> list; private MyFragmentPagerAdapter adapter; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fragment_viewpager); vp = (ViewPager) findViewById(R.id.fragment_pager_vp); list = new ArrayList<>(); list.add(new FragmentPager()); list.add(new FragmentPager(R.mipmap.ic_launcher)); adapter = new MyFragmentPagerAdapter(getSupportFragmentManager(),list); vp.setAdapter(adapter); }}可能出现的问题:问题:在MainActivity中,当写到这句:list.add(new FragmentPager(); 向Fragment列表中添加Fragement对象实例时,会提示“无法将FragmentPager()转换为fragment”解决办法 :这是因为导入包不一致,一般的问题在于:在Fragment1中导入的是android.app.Fragment, 而在这里导入类确是:android.support.v4.app.Fragment,包不同当然无法转换,统一导入为android.support.v4.app.Fragment之后就正常了
0 0
- ViewPager、ViewPager和Fragment组合使用的基本用法
- ViewPager和Fragment的组合使用
- ViewPager和Fragment的组合使用
- ViewPager和Fragment的组合使用
- ViewPager和Fragment的组合使用
- ViewPager和Fragment的组合使用
- ViewPager和Fragment的组合使用
- ViewPager和Fragment的组合使用
- ViewPager和Fragment的组合使用
- Fragment和ViewPager组合用法小结
- Fragment和ViewPager的简单组合
- ViewPager和fragment的使用
- ViewPager 和Fragment的使用
- ViewPager和Fragment的使用
- fragment和viewpager的使用
- Android中ViewPager+Fragment的基本使用
- Android中ViewPager+Fragment的基本使用
- Android项目ViewPager+Fragment的基本使用
- POJ 1664 放苹果(递归)
- Android开发环境的搭建遇到的问题和解决
- MySQL之逻辑查询处理流程
- kubernetes 1.3 的安装和集群环境部署
- mysql命令2
- ViewPager、ViewPager和Fragment组合使用的基本用法
- Android 耳机按键与拔插监听
- bat面试内容
- 算法竞赛入门经典3.5 谜题UVa455
- 关于火狐和IE下select控制div
- POJ 2236(简单并查集)
- HDOJ-1241 Oil Deposits
- Where Amazing Happens(打表)
- C++ STL 之 lower_bound and upper_bound