[Modify]优化首页加载
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
package com.yizhuan.erban.avroom.adapter
|
||||
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.viewpager2.adapter.FragmentStateAdapter
|
||||
|
||||
/**
|
||||
* ViewPager2适配器
|
||||
* Created by wushaocheng on 2022/12/07.
|
||||
*/
|
||||
class CommonVPAdapter(
|
||||
fm: FragmentManager,
|
||||
lifecycle: Lifecycle,
|
||||
private val fragmentList: List<Fragment>
|
||||
) : FragmentStateAdapter(fm, lifecycle) {
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return fragmentList.size
|
||||
}
|
||||
|
||||
override fun createFragment(position: Int): Fragment {
|
||||
return fragmentList[position]
|
||||
}
|
||||
}
|
@@ -1,18 +1,16 @@
|
||||
package com.yizhuan.erban.home.fragment
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
import com.yizhuan.erban.R
|
||||
import com.yizhuan.erban.application.IReportConstants
|
||||
import com.yizhuan.erban.application.ReportManager
|
||||
import com.yizhuan.erban.avroom.adapter.RoomVPAdapter
|
||||
import com.yizhuan.erban.base.BaseFragment
|
||||
import com.yizhuan.erban.avroom.adapter.CommonVPAdapter
|
||||
import com.yizhuan.erban.base.BaseViewBindingFragment
|
||||
import com.yizhuan.erban.databinding.FragmentHomeBinding
|
||||
import com.yizhuan.erban.home.HomeViewModel
|
||||
import com.yizhuan.erban.home.adapter.PartyMagicIndicatorAdapter
|
||||
@@ -24,21 +22,17 @@ import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.Commo
|
||||
import com.yizhuan.xchat_android_core.DemoCache
|
||||
import com.yizhuan.xchat_android_core.UriProvider
|
||||
import com.yizhuan.xchat_android_core.home.bean.HomeTagInfo
|
||||
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
|
||||
import com.yizhuan.xchat_android_core.statistic.StatisticManager
|
||||
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol
|
||||
import com.yizhuan.xchat_android_library.common.util.Logger
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
|
||||
/**
|
||||
* Peko首页
|
||||
*/
|
||||
class HomeFragment : BaseFragment(), View.OnClickListener,
|
||||
class HomeFragment : BaseViewBindingFragment<FragmentHomeBinding>(), View.OnClickListener,
|
||||
PartyMagicIndicatorAdapter.OnItemSelectListener {
|
||||
|
||||
private lateinit var mBinding: FragmentHomeBinding
|
||||
private val mFragments: ArrayList<Fragment> = ArrayList()
|
||||
private val mTabInfoList: ArrayList<HomeTagInfo> = ArrayList()
|
||||
private val homeViewModel: HomeViewModel by activityViewModels()
|
||||
@@ -47,6 +41,16 @@ class HomeFragment : BaseFragment(), View.OnClickListener,
|
||||
private const val TAG = "HomeFragment"
|
||||
}
|
||||
|
||||
override fun init() {
|
||||
initTitleTab()
|
||||
homeViewModel.tagLiveData.observe(this) {
|
||||
it?.let {
|
||||
onGetHomeTagSuccess(it)
|
||||
}
|
||||
}
|
||||
homeViewModel.getTagInfo()
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
when (v.id) {
|
||||
R.id.iv_search -> {
|
||||
@@ -91,29 +95,6 @@ class HomeFragment : BaseFragment(), View.OnClickListener,
|
||||
}
|
||||
}
|
||||
|
||||
override fun getRootLayoutId(): Int {
|
||||
return R.layout.fragment_home
|
||||
}
|
||||
|
||||
override fun onFindViews() {
|
||||
mBinding = DataBindingUtil.bind(mView)!!
|
||||
}
|
||||
|
||||
override fun onSetListener() {
|
||||
mBinding.click = this
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
override fun initiate() {
|
||||
initTitleTab()
|
||||
homeViewModel.tagLiveData.observe(this) {
|
||||
it?.let {
|
||||
onGetHomeTagSuccess(it)
|
||||
}
|
||||
}
|
||||
homeViewModel.getTagInfo()
|
||||
}
|
||||
|
||||
private fun onGetHomeTagSuccess(info: List<HomeTagInfo>) {
|
||||
var changed = false
|
||||
mTabInfoList.filter { it.id != 6 }
|
||||
@@ -126,7 +107,7 @@ class HomeFragment : BaseFragment(), View.OnClickListener,
|
||||
}
|
||||
//只有HomeTagInfo发生改变才刷新数据
|
||||
if (changed) {
|
||||
Logger.info(TAG,"oldTabInfoList:change");
|
||||
Logger.info(TAG, "oldTabInfoList:change");
|
||||
mTabInfoList.clear()
|
||||
mFragments.clear()
|
||||
mTabInfoList.add(
|
||||
@@ -169,21 +150,12 @@ class HomeFragment : BaseFragment(), View.OnClickListener,
|
||||
magicIndicatorAdapter.textSize = 14
|
||||
magicIndicatorAdapter.setOnItemSelectListener(this)
|
||||
commonNavigator.adapter = magicIndicatorAdapter
|
||||
mBinding.magicIndicator.navigator = commonNavigator
|
||||
mBinding.viewPager.offscreenPageLimit = 2
|
||||
mBinding.viewPager.adapter = RoomVPAdapter(
|
||||
childFragmentManager,
|
||||
mFragments
|
||||
)
|
||||
ViewPagerHelper.bind(mBinding.magicIndicator, mBinding.viewPager)
|
||||
binding.magicIndicator.navigator = commonNavigator
|
||||
binding.viewPager.adapter = CommonVPAdapter(childFragmentManager, lifecycle, mFragments)
|
||||
ViewPagerHelper.bind(binding.magicIndicator, binding.viewPager)
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
|
||||
if (isResumed) homeViewModel.getTagInfo()
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化推荐
|
||||
*/
|
||||
@@ -204,14 +176,13 @@ class HomeFragment : BaseFragment(), View.OnClickListener,
|
||||
magicIndicatorAdapter.textSize = 14
|
||||
magicIndicatorAdapter.setOnItemSelectListener(this)
|
||||
commonNavigator.adapter = magicIndicatorAdapter
|
||||
mBinding.magicIndicator.navigator = commonNavigator
|
||||
mBinding.viewPager.offscreenPageLimit = 2
|
||||
mBinding.viewPager.adapter = RoomVPAdapter(childFragmentManager, mFragments)
|
||||
ViewPagerHelper.bind(mBinding.magicIndicator, mBinding.viewPager)
|
||||
binding.magicIndicator.navigator = commonNavigator
|
||||
binding.viewPager.adapter = CommonVPAdapter(childFragmentManager, lifecycle, mFragments)
|
||||
ViewPagerHelper.bind(binding.magicIndicator, binding.viewPager)
|
||||
}
|
||||
|
||||
override fun onItemSelect(position: Int, view: TextView?) {
|
||||
mBinding.viewPager.currentItem = position
|
||||
binding.viewPager.currentItem = position
|
||||
//点击顶部tab上报
|
||||
val map = HashMap<String, Any>(3)
|
||||
map[IReportConstants.HOMEPAGE_TAB] = mTabInfoList[position].id
|
||||
|
@@ -206,7 +206,7 @@ public class HomeTabHomeFragment extends BaseFragment {
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onRefreshHomeDataEvent(RefreshHomeDataEvent event) {
|
||||
if (isResumed()) getData();
|
||||
// if (isResumed()) getData();
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -19,11 +19,8 @@ import com.yizhuan.erban.home.helper.BannerHelper
|
||||
import com.yizhuan.erban.home.helper.OpenRoomHelper
|
||||
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo
|
||||
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
|
||||
import com.yizhuan.xchat_android_core.statistic.StatisticManager
|
||||
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol
|
||||
import com.yizhuan.xchat_android_core.user.UserModel
|
||||
import com.yizhuan.xchat_android_core.user.event.LoginUserInfoUpdateEvent
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
|
@@ -14,8 +14,6 @@ import com.yizhuan.erban.home.adapter.RoomCommonAdapter
|
||||
import com.yizhuan.erban.ui.utils.RVDelegate
|
||||
import com.yizhuan.xchat_android_core.home.bean.HomeRoomInfo
|
||||
import com.yizhuan.xchat_android_core.home.event.RefreshHomeDataEvent
|
||||
import com.yizhuan.xchat_android_core.statistic.StatisticManager
|
||||
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol
|
||||
import com.yizhuan.xchat_android_library.utils.ResUtil
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
@@ -40,9 +38,11 @@ class RoomCommonFragment : BaseViewBindingFragment<FragmentRoomCommonBinding>()
|
||||
private lateinit var mAdapter: RoomCommonAdapter
|
||||
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
|
||||
|
||||
private val roomCommonViewModel: RoomCommonViewModel by viewModels()
|
||||
private var roomCommonViewModel: RoomCommonViewModel? = null
|
||||
|
||||
override fun init() {
|
||||
val roomCommonViewModel: RoomCommonViewModel by viewModels()
|
||||
this.roomCommonViewModel = roomCommonViewModel
|
||||
mAdapter = RoomCommonAdapter()
|
||||
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
|
||||
.setAdapter(mAdapter)
|
||||
@@ -55,10 +55,6 @@ class RoomCommonFragment : BaseViewBindingFragment<FragmentRoomCommonBinding>()
|
||||
mAdapter.setOnItemClickListener { _, _, position ->
|
||||
mAdapter.getItem(position)?.let {
|
||||
AVRoomActivity.start(context, it.roomUid)
|
||||
StatisticManager.Instance()
|
||||
.onEvent("tab${tabID}_success_room", ResUtil.getString(R.string.home_fragment_roomcommonfragment_02))
|
||||
StatisticManager.Instance()
|
||||
.onEvent(StatisticsProtocol.EVENT_COMMON_TAB_ROOM_SUCCESS, ResUtil.getString(R.string.home_fragment_roomcommonfragment_03))
|
||||
}
|
||||
}
|
||||
mAdapter.setOnLoadMoreListener({
|
||||
@@ -82,7 +78,7 @@ class RoomCommonFragment : BaseViewBindingFragment<FragmentRoomCommonBinding>()
|
||||
fun loadData(isRefresh: Boolean) {
|
||||
binding.refreshLayout.isRefreshing = isRefresh
|
||||
pageNum = if (isRefresh) 1 else (pageNum + 1)
|
||||
roomCommonViewModel.getCommonRoom(tabID, pageNum, pageSize)
|
||||
roomCommonViewModel?.getCommonRoom(tabID, pageNum, pageSize)
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@@ -90,13 +86,13 @@ class RoomCommonFragment : BaseViewBindingFragment<FragmentRoomCommonBinding>()
|
||||
EventBus.getDefault().register(this)
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
EventBus.getDefault().unregister(this)
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
|
||||
if (isResumed) loadData(true)
|
||||
// if (isResumed) loadData(true)
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
package com.yizhuan.erban.home.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.yizhuan.erban.R
|
||||
import com.yizhuan.erban.avroom.activity.AVRoomActivity
|
||||
@@ -33,14 +33,22 @@ class RoomGameFragment : BaseViewBindingFragment<FragmentRoomGameBinding>() {
|
||||
private var page = 1
|
||||
private lateinit var rvDelegate: RVDelegate<HomeRoomInfo>
|
||||
private val pageSize = 20
|
||||
private val homeViewModel: HomeViewModel by activityViewModels()
|
||||
private var homeViewModel: HomeViewModel? = null
|
||||
|
||||
override fun init() {
|
||||
val homeViewModel: HomeViewModel by viewModels()
|
||||
this.homeViewModel = homeViewModel
|
||||
|
||||
roomHotAdapter = RoomGameAdapter()
|
||||
rvDelegate = RVDelegate.Builder<HomeRoomInfo>()
|
||||
.setAdapter(roomHotAdapter)
|
||||
.setRecyclerView(binding.recyclerView)
|
||||
.setEmptyView(EmptyViewHelper.createEmptyView(context, ResUtil.getString(R.string.home_fragment_roomgamefragment_01)))
|
||||
.setEmptyView(
|
||||
EmptyViewHelper.createEmptyView(
|
||||
context,
|
||||
ResUtil.getString(R.string.home_fragment_roomgamefragment_01)
|
||||
)
|
||||
)
|
||||
.setLayoutManager(LinearLayoutManager(mContext))
|
||||
.setRefreshLayout(binding.refreshLayout)
|
||||
.setPageSize(pageSize)
|
||||
@@ -80,7 +88,7 @@ class RoomGameFragment : BaseViewBindingFragment<FragmentRoomGameBinding>() {
|
||||
} else {
|
||||
page++
|
||||
}
|
||||
homeViewModel.getGameRoom(page, pageSize)
|
||||
homeViewModel?.getGameRoom(page, pageSize)
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@@ -95,6 +103,6 @@ class RoomGameFragment : BaseViewBindingFragment<FragmentRoomGameBinding>() {
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) {
|
||||
if (isResumed) loadData(true)
|
||||
// if (isResumed) loadData(true)
|
||||
}
|
||||
}
|
@@ -1,6 +1,7 @@
|
||||
package com.yizhuan.erban.ui.widget.magicindicator;
|
||||
|
||||
import androidx.viewpager.widget.ViewPager;
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
|
||||
/**
|
||||
@@ -9,6 +10,35 @@ import androidx.viewpager.widget.ViewPager;
|
||||
*/
|
||||
|
||||
public class ViewPagerHelper {
|
||||
|
||||
public static void bind(final MagicIndicator magicIndicator, ViewPager2 viewPager) {
|
||||
if (viewPager == null) {
|
||||
return;
|
||||
}
|
||||
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
|
||||
@Override
|
||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||
if (magicIndicator != null) {
|
||||
magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
if (magicIndicator != null) {
|
||||
magicIndicator.onPageSelected(position);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
if (magicIndicator != null) {
|
||||
magicIndicator.onPageScrollStateChanged(state);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static void bind(final MagicIndicator magicIndicator, ViewPager viewPager) {
|
||||
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||
|
||||
@@ -28,4 +58,5 @@ public class ViewPagerHelper {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -84,7 +84,7 @@
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:layout_marginEnd="@dimen/dp_12"/>
|
||||
|
||||
<androidx.viewpager.widget.ViewPager
|
||||
<androidx.viewpager2.widget.ViewPager2
|
||||
android:id="@+id/view_pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
Reference in New Issue
Block a user