diff --git a/app/src/main/java/com/gamedog/vididin/features/winrecords/WinRecordsActivity.kt b/app/src/main/java/com/gamedog/vididin/features/winrecords/WinRecordsActivity.kt index 1eb8e47..8c35be9 100644 --- a/app/src/main/java/com/gamedog/vididin/features/winrecords/WinRecordsActivity.kt +++ b/app/src/main/java/com/gamedog/vididin/features/winrecords/WinRecordsActivity.kt @@ -7,56 +7,95 @@ import androidx.activity.viewModels import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding -import com.ama.core.architecture.appBase.AppViewsActivity +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import androidx.recyclerview.widget.LinearLayoutManager +import com.ama.core.architecture.appBase.AppViewsEmptyViewModelActivity +import com.ama.core.architecture.util.CommonItemDecoration +import com.gamedog.vididin.beans.ZeroBuyResp +import com.gamedog.vididin.features.zero.ZeroBuyViewModel +import com.gamedog.vididin.features.zero.ZeroRecordAdapter import com.vididin.real.money.game.R import com.gamedog.vididin.main.interfaces.OnTabStyleListener +import com.gamedog.vididin.netbase.Result import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.launch import kotlin.getValue import com.vididin.real.money.game.databinding.ActivityWinRecordBinding as ViewBinding -import com.gamedog.vididin.main.MainUiState as UiState -import com.gamedog.vididin.main.MainViewModel as ViewModel + @AndroidEntryPoint -class WinRecordsActivity : AppViewsActivity(), OnTabStyleListener { +class WinRecordsActivity : AppViewsEmptyViewModelActivity(), OnTabStyleListener { + + private val viewModel: ZeroBuyViewModel by viewModels() + private lateinit var mAdapter: ZeroRecordAdapter + - override val mViewModel: ViewModel by viewModels() override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater) - override fun ViewBinding.initViews() { with(binding) { titlebar.setBackIconColor(R.color.black) titlebar.setTitleText(R.string.lottery_record, R.color.black) + + + + with(recyclerView) { + mAdapter = ZeroRecordAdapter() + adapter = mAdapter + layoutManager = LinearLayoutManager(this@WinRecordsActivity, LinearLayoutManager.VERTICAL, false) + addItemDecoration( + CommonItemDecoration.create(horizontalSpace = 0, verticalSpace = 30) + ) + } } } override fun ViewBinding.initWindowInsets() { - ViewCompat.setOnApplyWindowInsetsListener(contentRoot) { v, insets -> + setImmerseRootView(root) + /*ViewCompat.setOnApplyWindowInsetsListener(contentRoot) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout()) v.updatePadding(top = systemBars.top) insets - } + }*/ } override fun ViewBinding.initListeners() { //TODO("Not yet implemented") + requestData() } override fun ViewBinding.initObservers() { //TODO("Not yet implemented") } - override fun ViewBinding.onUiStateCollect(uiState: UiState) { - //TODO("Not yet implemented") - } - override fun onTabIsDarkFont(isDarkFont: Boolean) { //TODO("Not yet implemented") } + private fun requestData() { + lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.STARTED) { + viewModel.ZeroBuyListData.collect { result -> + when (result) { + is com.gamedog.vididin.netbase.Result.Loading -> { } + is com.gamedog.vididin.netbase.Result.Success -> updateUIs(result.data) + is Result.Error -> { } + } + } + } + } + + viewModel.requestZeroBuyInfo() + } + + private fun updateUIs(data: ZeroBuyResp) { + mAdapter.submitList(data.mCurrentList) + } companion object { internal fun startActivity(activity: Activity) { diff --git a/app/src/main/java/com/gamedog/vididin/features/zero/ZeroRecordAdapter.kt b/app/src/main/java/com/gamedog/vididin/features/zero/ZeroRecordAdapter.kt new file mode 100644 index 0000000..ad9f253 --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/features/zero/ZeroRecordAdapter.kt @@ -0,0 +1,62 @@ +package com.gamedog.vididin.features.zero + + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.core.view.isVisible +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import com.gamedog.vididin.beans.ZeroBuyItem +import com.gamedog.vididin.core.login.login.AccountManager +import com.vididin.real.money.game.R +import java.text.SimpleDateFormat +import com.vididin.real.money.game.databinding.ZeroRecordWinBinding as ViewBinding + +class ZeroRecordAdapter() : ListAdapter(DiffCallback()) { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val binding = ViewBinding.inflate(LayoutInflater.from(parent.context), parent, false) + return ViewHolder(binding) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + holder.bind(getItem(position)) + } + + override fun submitList(list: List?) { + val sortedList = list?.sortedBy { it?.end_time } + super.submitList(sortedList) + } + + private fun isWinItem(item: ZeroBuyItem): Boolean { + val winerIds = item.winners + return winerIds?.contains(AccountManager.getAccount()?.userId) ?: false + } + + inner class ViewHolder(private val binding: ViewBinding) : RecyclerView.ViewHolder(binding.root) { + fun bind(item: ZeroBuyItem) { + val isWinItem = isWinItem(item) + + with(binding) { + tvDateWin.text = SimpleDateFormat("yyyy/MM/dd").format(item.start_time * 1000) + rlBg.setBackgroundResource(if (isWinItem) R.drawable.bg_records_win else R.drawable.bg_records_lost) + ivLeftWin.setImageResource(if (isWinItem) R.mipmap.record_win else R.mipmap.record_lost) + tvTitleWin.text = item.title + //tvDescWin.text = item. + llRightWin.isVisible = isWinItem + llRightLost.isVisible = !isWinItem + } + } + } + + class DiffCallback : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: ZeroBuyItem, newItem: ZeroBuyItem): Boolean { + return oldItem.id == newItem.id + } + + override fun areContentsTheSame(oldItem: ZeroBuyItem, newItem: ZeroBuyItem): Boolean { + return false + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_win_record.xml b/app/src/main/res/layout/activity_win_record.xml index f408a91..763db90 100644 --- a/app/src/main/res/layout/activity_win_record.xml +++ b/app/src/main/res/layout/activity_win_record.xml @@ -11,200 +11,36 @@ android:layout_height="wrap_content" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout/zero_record_lost.xml b/app/src/main/res/layout/zero_record_lost.xml new file mode 100644 index 0000000..5a93983 --- /dev/null +++ b/app/src/main/res/layout/zero_record_lost.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/zero_record_win.xml b/app/src/main/res/layout/zero_record_win.xml new file mode 100644 index 0000000..8b2160d --- /dev/null +++ b/app/src/main/res/layout/zero_record_win.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 358d3a6..33d2709 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -120,5 +120,6 @@ Já participou Reembolso em You have participated this activity. + There\'s no any record \ No newline at end of file