|
@@ -3,21 +3,28 @@ package com.adealink.weparty.wallet.diamond
|
|
|
import android.os.Bundle
|
|
import android.os.Bundle
|
|
|
import androidx.fragment.app.viewModels
|
|
import androidx.fragment.app.viewModels
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
|
|
|
+import com.adealink.frame.aab.util.getCompatColor
|
|
|
import com.adealink.frame.base.Rlt
|
|
import com.adealink.frame.base.Rlt
|
|
|
import com.adealink.frame.base.fastLazy
|
|
import com.adealink.frame.base.fastLazy
|
|
|
import com.adealink.frame.mvvm.view.viewBinding
|
|
import com.adealink.frame.mvvm.view.viewBinding
|
|
|
|
|
+import com.adealink.frame.util.timeToEnYM
|
|
|
import com.adealink.weparty.commonui.BaseFragment
|
|
import com.adealink.weparty.commonui.BaseFragment
|
|
|
-import com.adealink.weparty.commonui.dialogfragment.WheelDatePickerDialogFragment
|
|
|
|
|
|
|
+import com.adealink.weparty.commonui.datepicker.CustomDatePicker
|
|
|
import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
|
|
import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
|
|
|
import com.adealink.weparty.module.wallet.data.CoinCategory
|
|
import com.adealink.weparty.module.wallet.data.CoinCategory
|
|
|
import com.adealink.weparty.wallet.R
|
|
import com.adealink.weparty.wallet.R
|
|
|
|
|
+import com.adealink.weparty.wallet.data.CurrencyHistoryErrorEmptyData
|
|
|
|
|
+import com.adealink.weparty.wallet.data.CurrencyHistoryErrorEmptyDataType
|
|
|
|
|
+import com.adealink.weparty.wallet.data.CurrencyHistoryListItemData
|
|
|
import com.adealink.weparty.wallet.data.DiamondSource
|
|
import com.adealink.weparty.wallet.data.DiamondSource
|
|
|
import com.adealink.weparty.wallet.databinding.FragmentDiamondRecordBinding
|
|
import com.adealink.weparty.wallet.databinding.FragmentDiamondRecordBinding
|
|
|
import com.adealink.weparty.wallet.util.CurrencyHistoryListItemDiffUtil
|
|
import com.adealink.weparty.wallet.util.CurrencyHistoryListItemDiffUtil
|
|
|
-import com.adealink.weparty.wallet.view.DiamondRecordItemViewBinder
|
|
|
|
|
|
|
+import com.adealink.weparty.wallet.view.CurrencyHistoryErrorEmptyViewBinder
|
|
|
|
|
+import com.adealink.weparty.wallet.view.CurrencyHistoryListItemViewBinder
|
|
|
import com.adealink.weparty.wallet.viewmodel.WalletViewModel
|
|
import com.adealink.weparty.wallet.viewmodel.WalletViewModel
|
|
|
import com.adealink.weparty.wallet.viewmodel.WalletViewModelFactory
|
|
import com.adealink.weparty.wallet.viewmodel.WalletViewModelFactory
|
|
|
import java.text.SimpleDateFormat
|
|
import java.text.SimpleDateFormat
|
|
|
|
|
+import java.util.Calendar
|
|
|
import java.util.Date
|
|
import java.util.Date
|
|
|
import java.util.Locale
|
|
import java.util.Locale
|
|
|
|
|
|
|
@@ -30,6 +37,7 @@ class DiamondRecordFragment: BaseFragment(R.layout.fragment_diamond_record) {
|
|
|
private val listAdapter by fastLazy { MultiTypeListAdapter(CurrencyHistoryListItemDiffUtil()) }
|
|
private val listAdapter by fastLazy { MultiTypeListAdapter(CurrencyHistoryListItemDiffUtil()) }
|
|
|
private val walletViewModel by viewModels<WalletViewModel> { WalletViewModelFactory() }
|
|
private val walletViewModel by viewModels<WalletViewModel> { WalletViewModelFactory() }
|
|
|
private val diamondSource = arrayListOf(
|
|
private val diamondSource = arrayListOf(
|
|
|
|
|
+ DiamondSource(CoinCategory.ALL.value, CoinCategory.ALL.detail),
|
|
|
DiamondSource(CoinCategory.DIAMOND_CHAT.value, CoinCategory.DIAMOND_CHAT.detail),
|
|
DiamondSource(CoinCategory.DIAMOND_CHAT.value, CoinCategory.DIAMOND_CHAT.detail),
|
|
|
DiamondSource(CoinCategory.DIAMOND_LIVE_TALK.value, CoinCategory.DIAMOND_LIVE_TALK.detail),
|
|
DiamondSource(CoinCategory.DIAMOND_LIVE_TALK.value, CoinCategory.DIAMOND_LIVE_TALK.detail),
|
|
|
DiamondSource(CoinCategory.DIAMOND_ROOM_GIFT.value, CoinCategory.DIAMOND_ROOM_GIFT.detail),
|
|
DiamondSource(CoinCategory.DIAMOND_ROOM_GIFT.value, CoinCategory.DIAMOND_ROOM_GIFT.detail),
|
|
@@ -40,20 +48,40 @@ class DiamondRecordFragment: BaseFragment(R.layout.fragment_diamond_record) {
|
|
|
DiamondSource(CoinCategory.DIAMOND_AGENT.value, CoinCategory.DIAMOND_AGENT.detail),
|
|
DiamondSource(CoinCategory.DIAMOND_AGENT.value, CoinCategory.DIAMOND_AGENT.detail),
|
|
|
DiamondSource(CoinCategory.DIAMOND_PAYOUT_EXCHANGE.value, CoinCategory.DIAMOND_PAYOUT_EXCHANGE.detail)
|
|
DiamondSource(CoinCategory.DIAMOND_PAYOUT_EXCHANGE.value, CoinCategory.DIAMOND_PAYOUT_EXCHANGE.detail)
|
|
|
)
|
|
)
|
|
|
|
|
+ private var category: Int? = null
|
|
|
|
|
+ private var date = SimpleDateFormat("yyyyMM", Locale.ENGLISH).format(Date())
|
|
|
|
|
|
|
|
override fun initViews() {
|
|
override fun initViews() {
|
|
|
- binding.tvTime.text = SimpleDateFormat("yyyy.MM.dd", Locale.ENGLISH).format(Date())
|
|
|
|
|
|
|
+ binding.tvTime.text = SimpleDateFormat("yyyy.MM", Locale.ENGLISH).format(Date())
|
|
|
binding.tvTime.setOnClickListener {
|
|
binding.tvTime.setOnClickListener {
|
|
|
- showWheelDatePicker()
|
|
|
|
|
|
|
+ showDatePicker()
|
|
|
}
|
|
}
|
|
|
- binding.ivFilter.setOnClickListener {
|
|
|
|
|
|
|
+ binding.tvFilter.text = CoinCategory.ALL.detail
|
|
|
|
|
+ binding.tvFilter.setOnClickListener {
|
|
|
CategorySelectDialog().apply {
|
|
CategorySelectDialog().apply {
|
|
|
arguments = Bundle().apply {
|
|
arguments = Bundle().apply {
|
|
|
putParcelableArrayList(CategorySelectDialog.TYPE_LIST, diamondSource)
|
|
putParcelableArrayList(CategorySelectDialog.TYPE_LIST, diamondSource)
|
|
|
}
|
|
}
|
|
|
|
|
+ selectCallback = {
|
|
|
|
|
+ category = it.category
|
|
|
|
|
+ diamondSource.forEach { source ->
|
|
|
|
|
+ source.isSelected = it.category == source.category
|
|
|
|
|
+ }
|
|
|
|
|
+ if(category == CoinCategory.ALL.value) {
|
|
|
|
|
+ category = null
|
|
|
|
|
+ binding.tvFilter.isSelected = false
|
|
|
|
|
+ binding.tvFilter.setTextColor(getCompatColor(com.adealink.weparty.R.color.color_222222))
|
|
|
|
|
+ } else {
|
|
|
|
|
+ binding.tvFilter.isSelected = true
|
|
|
|
|
+ binding.tvFilter.setTextColor(getCompatColor(com.adealink.weparty.R.color.color_FF9352FC))
|
|
|
|
|
+ }
|
|
|
|
|
+ binding.tvFilter.text = it.detail
|
|
|
|
|
+ requestData()
|
|
|
|
|
+ }
|
|
|
}.show(childFragmentManager)
|
|
}.show(childFragmentManager)
|
|
|
}
|
|
}
|
|
|
- listAdapter.register(DiamondRecordItemViewBinder(false))
|
|
|
|
|
|
|
+ listAdapter.register(CurrencyHistoryListItemViewBinder(false))
|
|
|
|
|
+ listAdapter.register(CurrencyHistoryErrorEmptyViewBinder())
|
|
|
binding.rvRecord.apply {
|
|
binding.rvRecord.apply {
|
|
|
adapter = listAdapter
|
|
adapter = listAdapter
|
|
|
layoutManager = LinearLayoutManager(context)
|
|
layoutManager = LinearLayoutManager(context)
|
|
@@ -62,7 +90,7 @@ class DiamondRecordFragment: BaseFragment(R.layout.fragment_diamond_record) {
|
|
|
|
|
|
|
|
override fun loadData() {
|
|
override fun loadData() {
|
|
|
super.loadData()
|
|
super.loadData()
|
|
|
- walletViewModel.getDiamondRecordList()
|
|
|
|
|
|
|
+ requestData()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun observeViewModel() {
|
|
override fun observeViewModel() {
|
|
@@ -70,22 +98,42 @@ class DiamondRecordFragment: BaseFragment(R.layout.fragment_diamond_record) {
|
|
|
walletViewModel.diamondHistoryListLd.observe(viewLifecycleOwner) {
|
|
walletViewModel.diamondHistoryListLd.observe(viewLifecycleOwner) {
|
|
|
when (it) {
|
|
when (it) {
|
|
|
is Rlt.Success -> {
|
|
is Rlt.Success -> {
|
|
|
- listAdapter.items = it.data
|
|
|
|
|
- listAdapter.notifyDataSetChanged()
|
|
|
|
|
|
|
+ if(it.data.isNotEmpty()) {
|
|
|
|
|
+ val list = it.data.map { item -> CurrencyHistoryListItemData(item) }
|
|
|
|
|
+ listAdapter.submitList(list)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ listAdapter.submitList(
|
|
|
|
|
+ listOf(CurrencyHistoryErrorEmptyData(CurrencyHistoryErrorEmptyDataType.EmptyList))
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ else -> {
|
|
|
|
|
+ listAdapter.submitList(
|
|
|
|
|
+ listOf(CurrencyHistoryErrorEmptyData(CurrencyHistoryErrorEmptyDataType.NetError))
|
|
|
|
|
+ )
|
|
|
}
|
|
}
|
|
|
- else -> {}
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private fun showWheelDatePicker() {
|
|
|
|
|
- val dialog = WheelDatePickerDialogFragment.newInstance(targetMonthScope = -3) //支持最近三个月
|
|
|
|
|
- dialog.selectBirthdayCallback = object : WheelDatePickerDialogFragment.ISelectDateCallback {
|
|
|
|
|
- override fun onSelectComplete(timestamp: Long, timeStr: String) {
|
|
|
|
|
- binding.tvTime.text = timeStr
|
|
|
|
|
- //todo pwl 传参刷新列表
|
|
|
|
|
|
|
+ private fun requestData() {
|
|
|
|
|
+ walletViewModel.getDiamondHistoryList(date, 0, 20, category)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private fun showDatePicker() {
|
|
|
|
|
+ val currentTime = System.currentTimeMillis()
|
|
|
|
|
+ val threeMonthAgo = Calendar.getInstance().apply {
|
|
|
|
|
+ add(Calendar.MONTH, -3)
|
|
|
|
|
+ }.timeInMillis
|
|
|
|
|
+ val dialog = CustomDatePicker.newInstance(threeMonthAgo, currentTime, false, false)
|
|
|
|
|
+ dialog.mCallback = object : CustomDatePicker.Callback {
|
|
|
|
|
+ override fun onTimeSelected(timestamp: Long) {
|
|
|
|
|
+ binding.tvTime.text = timeToEnYM(timestamp)
|
|
|
|
|
+ date = SimpleDateFormat("yyyyMM", Locale.ENGLISH).format(timestamp)
|
|
|
|
|
+ requestData()
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- dialog.show(childFragmentManager, WheelDatePickerDialogFragment.SIMPLE_NAME)
|
|
|
|
|
|
|
+ dialog.show(childFragmentManager)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|