diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFragment.kt b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFragment.kt index 2aba98f6d..3683ae914 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFragment.kt @@ -1,10 +1,13 @@ package com.yizhuan.erban.home.fragment +import android.text.TextUtils import android.view.Gravity import android.view.View import android.widget.TextView import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken import com.netease.nim.uikit.common.util.sys.ScreenUtil import com.yizhuan.erban.R import com.yizhuan.erban.application.IReportConstants @@ -22,9 +25,9 @@ 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.statistic.StatisticManager -import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol +import com.yizhuan.xchat_android_library.common.SpConstants import com.yizhuan.xchat_android_library.common.util.Logger +import com.yizhuan.xchat_android_library.common.util.SPUtils import com.yizhuan.xchat_android_library.utils.ResUtil /** @@ -33,8 +36,8 @@ import com.yizhuan.xchat_android_library.utils.ResUtil class HomeFragment : BaseViewBindingFragment(), View.OnClickListener, PartyMagicIndicatorAdapter.OnItemSelectListener { - private val mFragments: ArrayList = ArrayList() - private val mTabInfoList: ArrayList = ArrayList() + private val mFragments = mutableListOf() + private val mTabInfoList = mutableListOf() private val homeViewModel: HomeViewModel by activityViewModels() companion object { @@ -97,15 +100,22 @@ class HomeFragment : BaseViewBindingFragment(), View.OnClic } } - private fun onGetHomeTagSuccess(info: List) { + private fun onGetHomeTagSuccess(tagInfo: List) { var changed = false mTabInfoList.filter { it.id != 6 } - val oldTabInfoList = mTabInfoList.map { it.name } - for (tagInfo in info) { - if (!oldTabInfoList.contains(tagInfo.name)) { + val homeTabInfo = SPUtils.getString(SpConstants.TAB_INFO_LIST, "") + if (!TextUtils.isEmpty(homeTabInfo)) { + val homeTagInfoList: List = + Gson().fromJson(homeTabInfo, object : TypeToken?>() {}.type) + if (homeTagInfoList.isNotEmpty()) { + if (homeTagInfoList != tagInfo) { + changed = true + } + } else { changed = true - break } + } else { + changed = true } //只有HomeTagInfo发生改变才刷新数据 if (changed) { @@ -120,17 +130,17 @@ class HomeFragment : BaseViewBindingFragment(), View.OnClic ) ) mFragments.add(RecommendFragment.newInstance()) - for (i in info.indices) { + for (i in tagInfo.indices) { //过滤对象是空和没有标签名同时也没有子标签的情况 var title: CharSequence? var fragment: Fragment? - var name = info[i].name + var name = tagInfo[i].name if (name != null) { name = name.trim { it <= ' ' } } title = name - mTabInfoList.add(info[i]) - val tabId: Int = info[i].id + mTabInfoList.add(tagInfo[i]) + val tabId: Int = tagInfo[i].id fragment = when (title) { ResUtil.getString(R.string.home_fragment_partyfragment_01) -> { RoomLikeFragment.newInstance() @@ -144,6 +154,12 @@ class HomeFragment : BaseViewBindingFragment(), View.OnClic } mFragments.add(fragment) } + + SPUtils.putString( + SpConstants.TAB_INFO_LIST, + Gson().toJson(mTabInfoList.filter { it.id != 6 }) + ) + val commonNavigator = CommonNavigator(context) commonNavigator.setTitleWrapContent(false) commonNavigator.titleMargin = ScreenUtil.dip2px(2.0F) @@ -170,6 +186,37 @@ class HomeFragment : BaseViewBindingFragment(), View.OnClic ) ) mFragments.add(RecommendFragment.newInstance()) + val homeTabInfo = SPUtils.getString(SpConstants.TAB_INFO_LIST, "") + if (!TextUtils.isEmpty(homeTabInfo)) { + val homeTagInfoList: List = + Gson().fromJson(homeTabInfo, object : TypeToken?>() {}.type) + if (homeTagInfoList.isNotEmpty()) { + for (i in homeTagInfoList.indices) { + //过滤对象是空和没有标签名同时也没有子标签的情况 + var title: CharSequence? + var fragment: Fragment? + var name = homeTagInfoList[i].name + if (name != null) { + name = name.trim { it <= ' ' } + } + title = name + mTabInfoList.add(homeTagInfoList[i]) + val tabId: Int = homeTagInfoList[i].id + fragment = when (title) { + ResUtil.getString(R.string.home_fragment_partyfragment_01) -> { + RoomLikeFragment.newInstance() + } + ResUtil.getString(R.string.home_fragment_partyfragment_02) -> { + RoomGameFragment.newInstance() + } + else -> { + RoomCommonFragment.newInstance(tabId) + } + } + mFragments.add(fragment) + } + } + } val commonNavigator = CommonNavigator(context) commonNavigator.setTitleWrapContent(false) commonNavigator.titleMargin = ScreenUtil.dip2px(2.0F) @@ -192,4 +239,10 @@ class HomeFragment : BaseViewBindingFragment(), View.OnClic ReportManager.get().reportEvent(IReportConstants.TAB_HOMEPAGE_CLICK, map) } + override fun onDestroyView() { + super.onDestroyView() + mTabInfoList.clear() + mFragments.clear() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/RoomLikeFragment.kt b/app/src/main/java/com/yizhuan/erban/home/fragment/RoomLikeFragment.kt index 0a8ffecb4..65f232f44 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/RoomLikeFragment.kt +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/RoomLikeFragment.kt @@ -104,8 +104,8 @@ class RoomLikeFragment : BaseViewBindingFragment() { } - override fun onResume() { - super.onResume() + override fun onLazyLoad() { + super.onLazyLoad() loadData(true) } @@ -131,7 +131,7 @@ class RoomLikeFragment : BaseViewBindingFragment() { @Subscribe(threadMode = ThreadMode.MAIN) fun onRefreshHomeDataEvent(event: RefreshHomeDataEvent?) { - if (isResumed) loadData(true) +// if (isResumed) loadData(true) } } \ No newline at end of file diff --git a/library/src/module_common/java/com/yizhuan/xchat_android_library/common/SpConstants.kt b/library/src/module_common/java/com/yizhuan/xchat_android_library/common/SpConstants.kt new file mode 100644 index 000000000..43ba125f3 --- /dev/null +++ b/library/src/module_common/java/com/yizhuan/xchat_android_library/common/SpConstants.kt @@ -0,0 +1,5 @@ +package com.yizhuan.xchat_android_library.common + +object SpConstants { + const val TAB_INFO_LIST = "tab_info_list" +} \ No newline at end of file