• [Android] Android ViewPager 中加载 Fragment的两种方式 方式(二)


    接上文:

    https://www.cnblogs.com/wukong1688/p/10693338.html

    Android ViewPager 中加载 Fragmenet的两种方式 方式(一)

    二、使用Fragment来填充ViewPager

    Google 官方是建议我们使用Fragment来填充ViewPager的,这样可以更加方便的生成每个Page以及管理 每个Page的生命周期!当然它给我们提供了两个不同的Adapter,他们分别是: FragmentPageAdapter和FragmentStatePagerAdapter!

    一般复杂的布局(如包含 ListView 或 RecycleView 等) , 都用此方法

    文件总数

    布局文件:fg_page1.xml + fg_page2.xml

    自定义Fragment 文件: MyFragment1.java   +   MyFragment2.java    (继承自 Fragment类)

    自定义Adapter类: MyFragmentPagerAdapter.java   (继承自 FragmentPagerAdapter 类)

    Activity 布局文件:  activity_test_vp2.xml

    Activity Java文件:  MainActivity.java

    本文仍以2个Page为例,来展现实现代码

    1)布局文件 fg_page1.xml   (fg_page2.xml类似)

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/txt_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:textSize="20sp" />
    
    </LinearLayout>

     2)自定义Fragment 文件: MyFragment2.java   (MyFragment2.java  类似)

    package com.jack.testmd;
    
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    public class MyFragment1 extends Fragment {
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fg_page1, container, false);
            TextView txt_content = (TextView) view.findViewById(R.id.txt_content);
            txt_content.setText("第一个Fragment");
    
            /*
            * 如果是其他逻辑
            * 例如 recycleList等 就在这里面继续设置数据
            * */
    
    
            return view;
        }
    }

     3)自定义Adapter类: MyFragmentPagerAdapter.java

    package com.jack.testmd;
    
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    
    import java.util.List;
    
    public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
        private FragmentManager fragmetnmanager;  //创建FragmentManager
        private List<Fragment> listfragment; //创建一个List<Fragment>
    
        public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {
            super(fm);
            this.fragmetnmanager = fm;
            this.listfragment = list;
        }
    
        @Override
        public Fragment getItem(int arg0) {
            return listfragment.get(arg0); //返回第几个fragment
        }
    
        @Override
        public int getCount() {
            return listfragment.size(); //总共有多少个fragment
        }
    }

    4)Activity 布局文件:  activity_test_vp2.xml

    <?xml version="1.0" encoding="utf-8"?>
    <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=".TestVp1Activity">
    
        <android.support.v4.view.ViewPager
            android:id="@+id/vpager_one"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
        </android.support.v4.view.ViewPager>
    
    </RelativeLayout>

    5)使用 -- Activity Java文件:  MainActivity.java :

       

        private ViewPager vpager_one;
        private ArrayList<Fragment> aList;
        private MyFragmentPagerAdapter mAdapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_test_vp2);
    
            vpager_one = (ViewPager) findViewById(R.id.vpager_one);
    
            aList = new ArrayList<Fragment>(); //new一个List<Fragment>
            aList.add(new MyFragment1());
            aList.add(new MyFragment2());
    
            mAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), aList);
            vpager_one.setAdapter(mAdapter);
            vpager_one.setCurrentItem(0);
        }

    本博客地址: wukong1688

    本文原文地址:https://www.cnblogs.com/wukong1688/p/10693536.html

    转载请著名出处!谢谢~~

  • 相关阅读:
    查询数据库中的相同值得所有表跟字段【存储过程】
    一些常用的SQL语句
    添加网站本地映射
    ReSharper 2016.3.2 Ultimate 官方最新破解版
    C# 利用VS自带的WSDL工具生成WebService服务类
    Linux环境下docker搭建wordpress应用
    Appium环境搭建
    内联以及外联css,js文件的理解
    前端雅虎23条理解
    docker安装和使用
  • 原文地址:https://www.cnblogs.com/wukong1688/p/10693536.html
Copyright © 2020-2023  润新知