版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29654885/article/details/86129373
1.懒加载
package com.berlin.lslibrary.scroll import android.os.Bundle import android.support.v4.app.Fragment import android.support.v7.widget.LinearLayoutManager import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.berlin.lslibrary.R import com.berlin.lslibrary.recyclerview.RecyclerAdapter import kotlinx.android.synthetic.main.layout_recyclerview.* abstract class LazyFragment : Fragment() { private var rootView: View? = null private var hasLoaded = false override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { if (rootView == null) { rootView = layoutInflater.inflate(R.layout.layout_recyclerview, container, false) hasLoaded = true } return rootView } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) if (rootView != null) { load() } } override fun setUserVisibleHint(isVisibleToUser: Boolean) { super.setUserVisibleHint(isVisibleToUser) load() } fun load() { if (hasLoaded && userVisibleHint) { lazyLoad() hasLoaded = false } } override fun onDestroyView() { super.onDestroyView() hasLoaded = false } abstract fun lazyLoad(); }
主要是setUserVisibleHint方法
2.重写FragmentStatePagerAdapter
package com.berlin.lslibrary.scroll import android.support.v4.app.FragmentManager import android.support.v4.app.FragmentStatePagerAdapter import android.view.ViewGroup class FragmentPagerAdapter(var fragmentManager: FragmentManager, var fragments: ArrayList<LazyFragment>) :FragmentStatePagerAdapter(fragmentManager){ override fun getItem(p0: Int) = fragments.get(p0) override fun getCount(): Int { return fragments.size } override fun getPageTitle(position: Int): CharSequence? { return "page $position" } override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { } }
主要是重写destroyItem方法 把super删了 就可以了