Android的Viewpager+Fragment懒加载

来源:互联网 发布:大数据概念上市公司 编辑:程序博客网 时间:2024/05/21 06:54

1.首先用到的库文件:https://github.com/lianghanzhen/LazyViewPager

2.xml布局:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <com.github.lianghanzhen.LazyViewPager        android:id="@+id/lazy_view_pager"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"        app:init_lazy_item_offset="0.3" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="50dp"        android:orientation="horizontal">        <TextView            android:id="@+id/txt1"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:gravity="center"            android:text="第一个"            android:textSize="14sp" />        <TextView            android:id="@+id/txt2"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:gravity="center"            android:text="第二个"            android:textSize="14sp" />        <TextView            android:id="@+id/txt3"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:gravity="center"            android:text="第三个"            android:textSize="14sp" />        <TextView            android:id="@+id/txt4"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:gravity="center"            android:text="第四个"            android:textSize="14sp" />    </LinearLayout></LinearLayout>
3.代码
package com.lushan.adapter;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.github.lianghanzhen.LazyFragmentPagerAdapter;import com.github.lianghanzhen.LazyViewPager;/** * Created on lushan * Created date 2017/8/7 10:04 */public class TestDemo extends AppCompatActivity implements View.OnClickListener {    private TextView txt1;    private TextView txt2;    private TextView txt3;    private TextView txt4;    private LazyViewPager lazy_view_pager;    private TxtFragment1 txtFragment1;    private TxtFragment2 txtFragment2;    private TxtFragment3 txtFragment3;    private TxtFragment4 txtFragment4;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_demo);        txt1 = (TextView) findViewById(R.id.txt1);        txt2 = (TextView) findViewById(R.id.txt2);        txt3 = (TextView) findViewById(R.id.txt3);        txt4 = (TextView) findViewById(R.id.txt4);        lazy_view_pager = (LazyViewPager) findViewById(R.id.lazy_view_pager);        txt1.setOnClickListener(this);        txt2.setOnClickListener(this);        txt3.setOnClickListener(this);        txt4.setOnClickListener(this);        lazy_view_pager.setAdapter(new CustomLazyFragmentPagerAdapter(getSupportFragmentManager()));    }    public class CustomLazyFragmentPagerAdapter extends LazyFragmentPagerAdapter {        private CustomLazyFragmentPagerAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(ViewGroup container, int position) {            switch (position) {                case 0:                    if (txtFragment1 == null) {                        txtFragment1 = new TxtFragment1();                    }                    return txtFragment1;                case 1:                    if (txtFragment2 == null) {                        txtFragment2 = new TxtFragment2();                    }                    return txtFragment2;                case 2:                    if (txtFragment3 == null) {                        txtFragment3 = new TxtFragment3();                    }                    return txtFragment3;                case 3:                    if (txtFragment4 == null) {                        txtFragment4 = new TxtFragment4();                    }                    return txtFragment4;            }            return null;        }        @Override        public int getCount() {            return 4;        }    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.txt1:                lazy_view_pager.setCurrentItem(0);                break;            case R.id.txt2:                lazy_view_pager.setCurrentItem(1);                break;            case R.id.txt3:                lazy_view_pager.setCurrentItem(2);                break;            case R.id.txt4:                lazy_view_pager.setCurrentItem(3);                break;        }    }}
4.输出: