zoukankan      html  css  js  c++  java
  • ViewPager的学习

    参考:慕课网《Android攻城狮的第二门课》

          在完成NaviActivity之前,先把需要使用的一个重要控件ViewPager学习一下。

    (1)使用view作为数据源:

     1 private List<View> viewList;
     2 private ViewPager pager;
     3 private PagerTabStrip tab;
     4 
     5 protected void onCreate(Bundle savedInstanceState) {
     6         super.onCreate(savedInstanceState);
     7         setContentView(R.layout.activity_navi);
     8         Intent oldpager = getIntent();
     9         int num = oldpager.getIntExtra("Authorization", 0);
    10         viewList = new ArrayList<View>();
    11         /**
    12          * 通过View对象去作为ViewPager的数据源
    13          */
    14         View firstView, secondView;
    15         titleList = new ArrayList<String>();
    16         firstView = View.inflate(this, R.layout.activity_machine_inquiry, null);
    17         titleList.add("机器查询");
    18         if (num == 0) {
    19             secondView = View.inflate(this, R.layout.activity_stu_info, null);
    20             //为ViewPager页卡设置标题
    21             titleList.add("用户信息");
    22         }else{
    23             secondView = View.inflate(this, R.layout.activity_stu_inquiry, null);
    24             titleList.add("学生查询");
    25         }
    26         viewList.add(firstView);
    27         viewList.add(secondView);
    28 
    29         //为PagerTabStrip设置一些属性
    30         tab = (PagerTabStrip) findViewById(R.id.stuTab);
    31         tab.setBackgroundColor(Color.YELLOW);
    32         tab.setTextColor(Color.RED);
    33         tab.setDrawFullUnderline(false);
    34         tab.setTabIndicatorColor(Color.GREEN);
    35 
    36         //初始化ViewPager
    37         pager = (ViewPager) findViewById(R.id.stuPager);
    38 
    39         //创建PagerAdapter的适配器
    40         MyPagerAdapter adapter = new MyPagerAdapter(viewList, titleList);
    41 
    42         //ViewPager加载适配器
    43         pager.setAdapter(adapter);
    44     }
    45 }
     1 package com.example.wanderingzj.stumanage;
     2 
     3 import android.support.v4.view.PagerAdapter;
     4 import android.view.View;
     5 import android.view.ViewGroup;
     6 
     7 import java.util.List;
     8 
     9 /**
    10  * Created by samsung on 2015/10/28.
    11  */
    12 public class MyPagerAdapter extends PagerAdapter {
    13     private List<View> viewList;
    14     private List<String> titleList;
    15 
    16     public MyPagerAdapter(List<View> viewList, List<String> titleList){
    17         this.viewList = viewList;
    18         this.titleList = titleList;
    19     }
    20 
    21     /**
    22      * 返回页卡数量
    23      * @return
    24      */
    25     @Override
    26     public int getCount() {
    27         return viewList.size();
    28     }
    29 
    30     /**
    31      * View是否来自于对象
    32      * @param arg0
    33      * @param arg1
    34      * @return
    35      */
    36     @Override
    37     public boolean isViewFromObject(View arg0, Object arg1) {
    38         return arg0 == arg1;
    39     }
    40 
    41     /**
    42      * 实例化一个页卡
    43      * @param container
    44      * @param position
    45      * @return
    46      */
    47     @Override
    48     public Object instantiateItem(ViewGroup container, int position) {
    49         container.addView(viewList.get(position));
    50         return viewList.get(position);
    51     }
    52 
    53     /**
    54      * 销毁一个页卡
    55      * @param container
    56      * @param position
    57      * @param object
    58      */
    59     @Override
    60     public void destroyItem(ViewGroup container, int position, Object object) {
    61         container.removeView(viewList.get(position));
    62     }
    63 
    64     /**
    65      * 设置ViewPager页卡标题
    66      * @param position
    67      * @return
    68      */
    69     @Override
    70     public CharSequence getPageTitle(int position) {
    71         return titleList.get(position);
    72     }
    73 }

     (2)使用fragment作为数据源:

     1 private List<Fragment> fragtList;
     2 private ViewPager pager;
     3 private PagerTabStrip tab;
     4 
     5 protected void onCreate(Bundle savedInstanceState) {
     6         super.onCreate(savedInstanceState);
     7         setContentView(R.layout.activity_navi);
     8         Intent oldpager = getIntent();
     9         int num = oldpager.getIntExtra("Authorization", 0);
    10   
    11         /**
    12          * 通过fragment作为ViewPager的数据源
    13          */
    14         fragtList = new ArrayList<Fragment>();
    15         //Activity向fragment传递数值
    16         Bundle bundle = new Bundle();
    17         bundle.putInt("Authorization", num);
    18         machineInquiryActivity = new MachineInquiryActivity();
    19         machineInquiryActivity.setArguments(bundle);
    20         fragtList.add(machineInquiryActivity);
    21         if (num == 0) {
    22             stuInfoActivity = new StuInfoActivity();
    23             stuInfoActivity.setArguments(bundle);
    24             fragtList.add(stuInfoActivity);
    25         }else{
    26             stuInquiryActivity = new StuInquiryActivity();
    27             stuInquiryActivity.setArguments(bundle);
    28             fragtList.add(stuInquiryActivity);
    29         }
    30 
    31 
    32         //为PagerTabStrip设置一些属性
    33         tab = (PagerTabStrip) findViewById(R.id.stuTab);
    34         tab.setBackgroundColor(Color.YELLOW);
    35         tab.setTextColor(Color.RED);
    36         tab.setDrawFullUnderline(false);
    37         tab.setTabIndicatorColor(Color.GREEN);
    38 
    39         //初始化ViewPager
    40         pager = (ViewPager) findViewById(R.id.stuPager);
    41 
    42         MyFragmentPagerAdapter adapterFrag = new MyFragmentPagerAdapter(getSupportFragmentManager(), fragtList, titleList);
    43         pager.setAdapter(adapterFrag);
    44     }
    45 }
     1 package com.example.wanderingzj.stumanage;
     2 
     3 import android.support.v4.app.FragmentPagerAdapter;
     4 import android.support.v4.app.Fragment;
     5 import android.support.v4.app.FragmentManager;
     6 import android.support.v4.app.FragmentStatePagerAdapter;
     7 import android.view.ViewGroup;
     8 
     9 import java.util.List;
    10 
    11 /**
    12  * Created by samsung on 2015/10/28.
    13  */
    14 public class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
    15     private List<Fragment> fragList;
    16     private List<String> titleList;
    17 
    18     public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragList, List<String> titleList){
    19         super(fm);
    20         this.fragList = fragList;
    21         this.titleList = titleList;
    22     }
    23 
    24     @Override
    25     public Fragment getItem(int position) {
    26         return fragList.get(position);
    27     }
    28 
    29     @Override
    30     public int getCount() {
    31         return fragList.size();
    32     }
    33 
    34     @Override
    35     public CharSequence getPageTitle(int position) {
    36         return titleList.get(position);
    37     }
    38 
    39     @Override
    40     public Object instantiateItem(ViewGroup container, int position) {
    41         return super.instantiateItem(container, position);
    42     }
    43 
    44     @Override
    45     public void destroyItem(ViewGroup container, int position, Object object) {
    46         super.destroyItem(container, position, object);
    47     }
    48 }

    虽然两种方法都顺利的完成了,但在显示PageTitle那却很蛋疼,必须滑动一下才能显示出来。。。

    后来经过查询得知可能是由于Support Library兼容性的关系

    不过已经打算弃用PagerTabStrip 了,在navi中实现换了新的方法。

  • 相关阅读:
    Redis常见问题及解决方案
    Maven构建报错问题解决
    Nginx正向代理设置
    Linux下限制某程序CPU占用
    Linux-flock文件锁的使用
    Python将print输出内容保存到指定文件中
    使用Zabbix官方模板监控Redis运行状况
    阿里云ossfs配置
    docker swarm 集群及可视化界面的安装及配置
    http://www.fx114.net/qa-24-116329.aspx
  • 原文地址:https://www.cnblogs.com/wanderingzj/p/4930614.html
Copyright © 2011-2022 走看看