ViewPager每页包含多个item

  (转载请说明来处,谢谢)  最近在帮公司做一个智能家居的项目,其中用到了viewpager的滑动,滑动可以切换view,并且每个view中还有多个item,于是想把自己简单的demo分享一下! 

直接上代码了,有一些代码或者类是多余的,请大家酌情处理,我懒得改了。。。。。。。


布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".fragment.HomeFragment">

    <!-- TODO: Update blank fragment layout -->
    <include android:id="@+id/include_title" layout="@layout/home_title_bar"></include>

    <!--   RelativeLayout  Top   -->
    <RelativeLayout
        android:id="@+id/rl_top"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="15dp"
        android:paddingBottom="5dp"
        android:paddingLeft="25dp"
        android:paddingRight="25dp"
        android:layout_below="@+id/include_title"
        android:background="#DDDDDD">
        <!--big image-->
        <RelativeLayout
            android:id="@+id/rl_top_first"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <ImageView
                android:id="@+id/rl_top_big_image"
                android:layout_width="match_parent"
                android:layout_height="150dp"
                android:src="@drawable/view2"
                android:layout_gravity="center_horizontal|top" />

            <ImageView
                android:id="@+id/rl_top_icon_image"
                android:layout_width="35dp"
                android:layout_height="35dp"
                android:layout_below="@+id/rl_top_big_image"
                android:src="@drawable/keting2"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="35dp"
                android:layout_toRightOf="@+id/rl_top_icon_image"
                android:layout_below="@+id/rl_top_big_image"
                android:gravity="center"
                android:text="客厅"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="35dp"
                android:layout_marginRight="0dp"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/rl_top_big_image"
                android:gravity="center"
                android:text="进入房间>>"
                android:id="@+id/rl_top_tv" />

        </RelativeLayout>

    </RelativeLayout>

    <!--   LinearLayout  Detail  -->
    <LinearLayout
        android:id="@+id/ll_detail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/rl_top">

        <!--房间湿度-->
        <RelativeLayout
            android:id="@+id/rl_detail_shi_du"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:background="@drawable/ll_detail_bg"
            android:gravity="center">
            <TextView
                android:id="@+id/tv_shi_du"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:textSize="25sp"
                android:text="50%"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tv_shi_du"
                android:text="房间湿度"/>
        </RelativeLayout>
        <!--温度-->
        <RelativeLayout
            android:id="@+id/rl_detail_wen_du"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:background="@drawable/ll_detail_bg"
            android:gravity="center"
            android:layout_weight="1">

            <TextView
                android:id="@+id/tv_wen_du"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="25sp"
                android:text="15%"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tv_wen_du"
                android:text="房间温度"/>
        </RelativeLayout>
        <!--灯光模式-->
        <RelativeLayout
            android:id="@+id/rl_detail_mo_shi"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:background="@drawable/ll_detail_bg"
            android:gravity="center"
            android:layout_weight="1">
            <TextView
                android:id="@+id/tv_mo_shi"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="25sp"
                android:text="夜间"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tv_mo_shi"
                android:text="灯光模式"/>
        </RelativeLayout>

    </LinearLayout>

    <!-- RelativeLayout advice-->
    <RelativeLayout
        android:id="@+id/rl_advice"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="15dp"
        android:layout_below="@+id/ll_detail"
        android:background="@drawable/ll_detail_bg"
        android:gravity="center">

        <TextView
            android:id="@+id/rl_advice_detail"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:text="检测到室内温度偏低,系统已自动开启空调"/>

    </RelativeLayout>

    <!-- FrameLayout Bottom-->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="120dp"
        android:layout_alignParentBottom="true">
        <!--  ViewPager  -->
        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </android.support.v4.view.ViewPager>
        <!--  指示器  -->
        <LinearLayout
            android:id="@+id/ll"
            android:layout_gravity="bottom"
            android:layout_width="fill_parent"
            android:layout_height="25dp"
            android:gravity="center_horizontal"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/iv1"
                android:layout_width="15dp"
                android:layout_height="15dp"
                android:src="@drawable/dot_selected" />

            <ImageView
                android:id="@+id/iv2"
                android:layout_width="15dp"
                android:layout_height="15dp"
                android:layout_marginRight="5dp"
                android:layout_marginLeft="5dp"
                android:src="@drawable/dot_normal" />

            <ImageView
                android:id="@+id/iv3"
                android:layout_width="15dp"
                android:layout_height="15dp"
                android:src="@drawable/dot_normal" />
        </LinearLayout>
    </FrameLayout>

</RelativeLayout>

JAVA文件:

package com.lei.myapplication.fragment;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.lei.myapplication.R;
import com.lei.myapplication.adapter.ViewPagerAdapter;
import java.util.ArrayList;
import java.util.List;

public class HomeFragment extends Fragment implements ViewPager.OnPageChangeListener{

    private ViewPager vp;
    private ViewPagerAdapter vpAdapter;
    private List<View> views;
    private ImageView[] dots;
    private int[] ids={R.id.iv1,R.id.iv2,R.id.iv3};
    private int[] imgids={R.id.iv1,R.id.iv2,R.id.iv3, R.drawable.keting2,R.drawable.keting2,R.drawable.keting2};
    private static int page=0;//默认房间滑动页
    ImageView img1,img2,img3,img4;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view=inflater.inflate(R.layout.fragment_home, container, false);
        return view;

    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initView();
        initDots();
    }
    private void initView() {
        
        LayoutInflater inflater=LayoutInflater.from(getActivity());
        views=new ArrayList<View>();
        views.add(inflater.inflate(R.layout.one, null));
        views.add(inflater.inflate(R.layout.two, null));
        views.add(inflater.inflate(R.layout.three, null));

        vpAdapter = new ViewPagerAdapter(views, getActivity());
        vp = (ViewPager) getActivity().findViewById(R.id.viewpager);
        vp.setAdapter(vpAdapter);
        vp.setOnPageChangeListener(this);

    }

    private void initDots(){
        dots=new ImageView[views.size()];
        for (int i = 0; i < views.size(); i++) {
            dots[i]=(ImageView) getActivity().findViewById(ids[i]);
        }
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }


    public void onPageSelected(int position) {
        page=position+1;
        // 指示器操作
        for (int i = 0; i < views.size(); i++) {
            if (position==i) {
                dots[i].setImageResource(R.drawable.dot_selected);
            }else {
                dots[i].setImageResource(R.drawable.dot_normal);
            }
        }

           /* //布局的注册
            img1=(ImageView)views.get(page).findViewById(R.id.img_1);
            img1.setOnClickListener(this);
            img2=(ImageView)views.get(page).findViewById(R.id.img_2);
            img2.setOnClickListener(this);
            img3=(ImageView)views.get(page).findViewById(R.id.img_3);
            img3.setOnClickListener(this);
            img4=(ImageView)views.get(page).findViewById(R.id.img_4);
            img4.setOnClickListener(this);*/
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }

}


adapter文件:

package com.lei.myapplication.adapter;

import android.content.Context;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;

import java.util.List;

public class ViewPagerAdapter extends PagerAdapter {

   private List<View> views;
   private Context context;
   
   
   public ViewPagerAdapter(List<View> views, Context context){
      
      this.views=views;
      this.context=context;
   }
   
   //  ����views
   public void destroyItem(View container, int position, Object arg2) {

      ((ViewPager) container).removeView(views.get(position));
      
   }
/* @Override
   public void destroyItem(View container, int position, Object object) {

      ((ViewPager) container).removeView(views.get(position));
   }*/

   @Override
   public void finishUpdate(View arg0) {
      // TODO Auto-generated method stub
      
   }

   // ����
   @Override
   public int getCount() {
      return views.size();
   }

   
   // ����view
   public Object instantiateItem(View container, int position) {
      
      ((ViewGroup) container).addView(views.get(position));
      return views.get(position);
   }

   @Override
   public boolean isViewFromObject(View arg0, Object arg1) {
      return (arg0==arg1) ;
   }

   @Override
   public void restoreState(Parcelable arg0, ClassLoader arg1) {
      // TODO Auto-generated method stub
      
   }

   @Override
   public Parcelable saveState() {
      // TODO Auto-generated method stub
      return null;
   }

   @Override
   public void startUpdate(View arg0) {
      // TODO Auto-generated method stub
      
   }

}
大体效果大家直接看图片吧,也可以直接下载demo学习。源码下载地址:http://download.youkuaiyun.com/detail/sinat_27681957/9490240

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值