Tab系列 01 ViewPager+PagerAdapter(传统方式)

ViewPager :  左右切换屏幕

PagerAdapter:   ViewPager的适配器, 加载ViewPager内容显示的View

  实现四个方法:

     isViewFromObject();

     getCount();

     instantiateItem();添加视图

     destroyItem()销毁视图

pagerAdapter = new PagerAdapter() {
             @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                // TODO Auto-generated method stub
                return arg0 == arg1;
            }

            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return views.size();
            }
            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                View view = views.get(position);
                container.addView(view);
                return view;
            }
            @Override
            public void destroyItem(ViewGroup container, int position,
                    Object object) {
                container.removeView(views.get(position));
            }
        };
        

Viewpager 设置滚动的事件监听:

  onPageSelected(int arg0);//滚动到了那个界面  进行相应处理
viewPager.setAdapter(pagerAdapter);
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                // TODO Auto-generated method stub
                switch (arg0) {
                case 0:
                    tv_header.setText("微信");
                    break;
                case 1:
                    tv_header.setText("好友");
                    break;
                case 2:
                    tv_header.setText("联系人");
                    break;
                case 3:
                    tv_header.setText("我的");
                    break;
                default:
                    break;
                }
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }
        });
        

视图的数据初始化, 加载视图:

inflater = LayoutInflater.from(this);
        views = new ArrayList<View>();
        View one = inflater.inflate(R.layout.tab01_content_layout, null);
        View two = inflater.inflate(R.layout.tab02_content_layout, null);
        View three = inflater.inflate(R.layout.tab03_content_layout, null);
        View four = inflater.inflate(R.layout.tab04_content_layout, null);
        views.add(one);
        views.add(two);
        views.add(three);
        views.add(four);

代码如下:

package com.example.tabdemo01;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MainActivity extends Activity {
    private ViewPager viewPager;
    private PagerAdapter pagerAdapter;
    private LayoutInflater inflater;
    TextView tv_header;
    private List<View> views;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        viewPager.setAdapter(pagerAdapter);
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                // TODO Auto-generated method stub
                switch (arg0) {
                case 0:
                    tv_header.setText("微信");
                    break;
                case 1:
                    tv_header.setText("好友");
                    break;
                case 2:
                    tv_header.setText("联系人");
                    break;
                case 3:
                    tv_header.setText("我的");
                    break;
                default:
                    break;
                }
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }
        });

    }

    public void initView() {
        tv_header = (TextView) findViewById(R.id.tv_headr);
        viewPager = (ViewPager) findViewById(R.id.viewPager);
        inflater = LayoutInflater.from(this);
        views = new ArrayList<View>();
        View one = inflater.inflate(R.layout.tab01_content_layout, null);
        View two = inflater.inflate(R.layout.tab02_content_layout, null);
        View three = inflater.inflate(R.layout.tab03_content_layout, null);
        View four = inflater.inflate(R.layout.tab04_content_layout, null);
        views.add(one);
        views.add(two);
        views.add(three);
        views.add(four);

        pagerAdapter = new PagerAdapter() {
             @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                // TODO Auto-generated method stub
                return arg0 == arg1;
            }

            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return views.size();
            }
            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                View view = views.get(position);
                container.addView(view);
                return view;
            }
            @Override
            public void destroyItem(ViewGroup container, int position,
                    Object object) {
                container.removeView(views.get(position));
            }
        };

    }
    public void onweixin(View view){
        viewPager.setCurrentItem(0);

    }
    public void onFriend(View view){
        viewPager.setCurrentItem(1);

    }
    public void onContacts(View view){
        viewPager.setCurrentItem(2);

    }
    public void onMyself(View view){
        viewPager.setCurrentItem(3);
    }

}
时间: 2024-08-10 14:57:19

Tab系列 01 ViewPager+PagerAdapter(传统方式)的相关文章

Tab系列 03 FragmentPagerAdapter + Fragment + ViewPager

使用ViewPager + Fragment  + FragmentPagerAdapter 实现tab内容切换 创建一个Activity继承FragmentActivity 适配器: FragmentPagerAdapter 与tab系列01 ViewPager + xml 的区别, ViewPager + Fragment 的区别 Adapter 加载数据 package com.example.tabdemo01; import java.util.ArrayList; import ja

我爱Java系列---【SpringMVC传统方式的文件上传和前端获取数据库图片在页面显示】

一.文件上传 说明:传统方式的文件上传,指的是我们上传的文件和访问的应用存在于同一台服务器上.并且上传完成之后,浏览器可能跳转. 1. 第一步:创建 maven 工程并导入 commons-fileupload 坐标 1 <dependency> 2 <groupId>commons-fileupload</groupId> 3 <artifactId>commons-fileupload</artifactId> 4 <version&g

Windows内核原理系列01 - 基本概念

1.Windows API Windows 应用编程接口(API)是针对WIndwos操作系统用户模式的系统编程接口,包含在WindwosSDK中. 2.关于.NET .NET由一个被称为FCL的类库和一个被称为CLR的公共语言运行库组成.FCL是建立在CLR之上的,而CLR是一组标准的COM服务器,提供了垃圾回收,即时编译类型检验等特性.由于CLR的这些特性,使得开发人员的生产效率得以提高..NET框架与组建的关系如下: .NET应用程序 用户模式(托管代码) —————————— 类库(FC

java io系列01之 &quot;目录&quot;

javaIO系列转载出处:http://www.cnblogs.com/skywang12345/p/io_01.html 该分类所有博文,均转载同一作者,后边不再累赘标名. java io 系列目录如下: 01. java io系列01之  "目录" 02. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream) 03. java io系列03之 ByteArrayOutputStream的简介,源码分析和示例(包括Ou

CentOS7.3将网卡命名方式设置为传统方式

CentOS7.3将网卡命名方式设置为传统方式 生产环境可能拥有不同系列的操作系统,比如,既有CentOS6系列,也有CentOS7系列的系统,而CentOS6和CentOS7在网卡命名方面有着较大区别,为便于管理,可以考虑将CentOS7的命名方式设置为传统的命名方式. 操作步骤 1. 编辑/etc/default/grub配置文件 GRUB_CMDLINE_LINUX="rhgbquiet net.ifnames=0" 或:修改/boot/grub2/grub.cfg 2.   为

JSP+Servlet+JavaBean传统方式实现简易留言板制作(注册、登录、留言)

学JavaEE也有一段时间了,跟着老师和教材做了不少东西,但是一直以来没时间写博客,今天就把以前写的一个简易留言板简单发一下吧. 开发工具 主要用的开发工具为 MyEclipse(2014.2016均可).Tomcat 7.0.SQL Server 2016.SSMS数据库管理工具.浏览器等. 开发环境 开发环境为windows系统,已安装配置Java最新版开发环境. 主要功能与语言 登录.注册.并可以在留言板留言,所有留言内容均可见. 所采用JSP+Servlet+JavaBean传统方式,仅

.net工作准备系列--01前言

注:学习参考朱毅编著的进入IT名企必读200题. 内容重在自我学习与巩固. 前言: 章节划分 01应聘须知 02基础知识(重点) 03进阶知识 04重点应用(aspnet第一部分) 04重点应用(aspnet第二部分) 05.网络通讯 06.代码与算法 07 增强知识 01应聘须知-1.了解软件开发大环境.-2.准备简历:不宜超过一页,永远准备中文,模板.-3.渠道:3大网站,中华英才,前程无忧(51job最给力),智联招聘. -4.面试禁忌:不重考官,不注礼节,夸夸其谈,急问待遇. 总得来说就

Java 集合系列 01 总体框架

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set集合.Map映射.工具类(Itera

1、传统方式实现任务调度

1.传统方式指的是调度类继承QuartzJobBean,调度下面这个类 public class QuartzJob1 extends QuartzJobBean{ @Override protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss"); System.ou