pengwuliang 8 месяцев назад
Родитель
Сommit
e64fb633bd

+ 3 - 2
module/rank/src/main/java/com/adealink/weparty/rank/RankActivity.kt

@@ -68,6 +68,7 @@ class RankActivity : BaseActivity() {
     private val rankListPageAdapter = RankListPageAdapter()
     private val rankListPageAdapter = RankListPageAdapter()
     private var type = TYPE_TOP_GIFT
     private var type = TYPE_TOP_GIFT
     private var time = TIME_DAILY
     private var time = TIME_DAILY
+    private var gender = TYPE_ALL
 
 
     private val backgroundColor
     private val backgroundColor
         get() = when(type) {
         get() = when(type) {
@@ -147,7 +148,7 @@ class RankActivity : BaseActivity() {
         }
         }
 
 
         override fun createFragment(position: Int): Fragment {
         override fun createFragment(position: Int): Fragment {
-            return RankListFragment.newInstance(type, TIME_LIST[position])
+            return RankListFragment.newInstance(type, TIME_LIST[position], gender)
         }
         }
 
 
         fun getFragmentByPos(position: Int): BaseFragment? {
         fun getFragmentByPos(position: Int): BaseFragment? {
@@ -237,7 +238,6 @@ class RankActivity : BaseActivity() {
 
 
     private fun setupTimeTabLayout() {
     private fun setupTimeTabLayout() {
         binding.vpRank.apply {
         binding.vpRank.apply {
-            isUserInputEnabled = false
             adapter = rankListPageAdapter
             adapter = rankListPageAdapter
 
 
             registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
             registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
@@ -327,6 +327,7 @@ class RankActivity : BaseActivity() {
                 genderTypeList.forEach {
                 genderTypeList.forEach {
                     it.isSelected = it == type
                     it.isSelected = it == type
                 }
                 }
+                gender = type.value
                 submitList(genderTypeList)
                 submitList(genderTypeList)
                 view.text = type.name
                 view.text = type.name
                 view.setCompoundDrawablesRelativeWithIntrinsicBounds(
                 view.setCompoundDrawablesRelativeWithIntrinsicBounds(

+ 11 - 3
module/rank/src/main/java/com/adealink/weparty/rank/ranklist/RankListFragment.kt

@@ -42,12 +42,13 @@ class RankListFragment : BaseFragment(R.layout.fragment_rank_list) {
 
 
     companion object {
     companion object {
         fun newInstance(
         fun newInstance(
-            type: Int = TYPE_TOP_GIFT, time: Int = TIME_DAILY
+            type: Int = TYPE_TOP_GIFT, time: Int = TIME_DAILY, gender: Int = TYPE_ALL
         ): RankListFragment {
         ): RankListFragment {
             val fragment = RankListFragment()
             val fragment = RankListFragment()
             val bundle = Bundle().apply {
             val bundle = Bundle().apply {
                 putInt(RankKey.TYPE, type)
                 putInt(RankKey.TYPE, type)
                 putInt(RankKey.TIME, time)
                 putInt(RankKey.TIME, time)
+                putInt(RankKey.GENDER, gender)
             }
             }
             fragment.arguments = bundle
             fragment.arguments = bundle
             return fragment
             return fragment
@@ -65,6 +66,7 @@ class RankListFragment : BaseFragment(R.layout.fragment_rank_list) {
 
 
     private var type = TYPE_TOP_GIFT // 榜单类型:
     private var type = TYPE_TOP_GIFT // 榜单类型:
     private var time = TIME_DAILY // 榜单周期
     private var time = TIME_DAILY // 榜单周期
+    private var gender = TYPE_ALL
     private val listAdapter by lazy { MultiTypeListAdapter(BaseListDiffUtil()) }
     private val listAdapter by lazy { MultiTypeListAdapter(BaseListDiffUtil()) }
     private val rankListViewModel by viewModels<RankListViewModel> { RankViewModelFactory() }
     private val rankListViewModel by viewModels<RankListViewModel> { RankViewModelFactory() }
     private val binding by viewBinding(FragmentRankListBinding::bind)
     private val binding by viewBinding(FragmentRankListBinding::bind)
@@ -119,6 +121,7 @@ class RankListFragment : BaseFragment(R.layout.fragment_rank_list) {
     private fun parseIntent() {
     private fun parseIntent() {
         type = arguments?.getInt(RankKey.TYPE, TYPE_TOP_GIFT) ?: TYPE_TOP_GIFT
         type = arguments?.getInt(RankKey.TYPE, TYPE_TOP_GIFT) ?: TYPE_TOP_GIFT
         time = arguments?.getInt(RankKey.TIME, TIME_DAILY) ?: TIME_DAILY
         time = arguments?.getInt(RankKey.TIME, TIME_DAILY) ?: TIME_DAILY
+        gender = arguments?.getInt(RankKey.GENDER, TYPE_ALL) ?: TYPE_ALL
     }
     }
 
 
     override fun observeViewModel() {
     override fun observeViewModel() {
@@ -131,7 +134,7 @@ class RankListFragment : BaseFragment(R.layout.fragment_rank_list) {
     }
     }
 
 
     private fun requestListData() {
     private fun requestListData() {
-        Log.d("PWL", "requestListData type: $type, time: $time")
+        Log.d("PWL", "requestListData type: $type, time: $time, gender: $gender")
         val activityId = ACTIVITY_ID_ARRAY[type][time]
         val activityId = ACTIVITY_ID_ARRAY[type][time]
         when(type) {
         when(type) {
             TYPE_TOP_GIFT,
             TYPE_TOP_GIFT,
@@ -168,6 +171,7 @@ class RankListFragment : BaseFragment(R.layout.fragment_rank_list) {
         if (!isViewBindingValid()) {
         if (!isViewBindingValid()) {
             return
             return
         }
         }
+        this.gender = gender
         val targetList = if(gender == TYPE_ALL) {
         val targetList = if(gender == TYPE_ALL) {
             rankListCache
             rankListCache
         } else {
         } else {
@@ -195,7 +199,11 @@ class RankListFragment : BaseFragment(R.layout.fragment_rank_list) {
         rankListCache.clear()
         rankListCache.clear()
         rankListCache.addAll(result.rankList)
         rankListCache.addAll(result.rankList)
 
 
-        val targetList = result.rankList.toList()
+        val targetList = if(gender != TYPE_ALL && type == TYPE_TOP_GIFT) {
+            result.rankList.filter { it.userInfo?.gender == gender }
+        } else {
+            result.rankList.toList()
+        }
         val (topList, remainingList) = if (targetList.size <= 3) {
         val (topList, remainingList) = if (targetList.size <= 3) {
             targetList to emptyList()
             targetList to emptyList()
         } else {
         } else {