适配:join时 服务器返回obj 放置到了 currentList

This commit is contained in:
renhaoting 2026-01-13 11:37:04 +08:00
parent 922df7550e
commit e28606c7d8
2 changed files with 25 additions and 14 deletions

View File

@ -223,12 +223,16 @@ class ZeroBuyActivity : AppViewsEmptyViewModelActivity<ViewBinding>() {
}
private fun updateItemUI(joinedItem: ZeroBuyItem?) {
val currentList = mAdapter.currentList.toMutableList()
val indexToUpdate = currentList.indexOfFirst { it.id == joinedItem?.id }
if (indexToUpdate != -1) {
currentList.removeAt(indexToUpdate)
currentList.add(indexToUpdate, joinedItem)
mAdapter.submitList(currentList)
if (joinedItem == null) {
mAdapter.notifyDataSetChanged()
} else {
val currentList = mAdapter.currentList.toMutableList()
val indexToUpdate = currentList.indexOfFirst { it.id == joinedItem?.id }
if (indexToUpdate != -1) {
currentList.removeAt(indexToUpdate)
currentList.add(indexToUpdate, joinedItem)
mAdapter.submitList(currentList)
}
}
}

View File

@ -20,7 +20,10 @@ import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
class ZeroBuyViewModel : ViewModel() {
private val CODE_HAS_JOINED_BEFORE: Int = 10003
private val _ZeroBuyListData = MutableStateFlow<Result<ZeroBuyResp>>(Result.Loading)
val ZeroBuyListData: StateFlow<Result<ZeroBuyResp>> = _ZeroBuyListData.asStateFlow()
@ -51,18 +54,22 @@ class ZeroBuyViewModel : ViewModel() {
val respObj = AndroidUtil.json2Object<ZeroBuyResp>(result.data.string())
respObj?.contentObj?.let {
val itemId = respObj.contentObj?.id
if ((respObj.code == 0 || respObj.code == 10003) && itemId != null && itemId > 0) {
val mutableJoinedIdList = if(joinZeroBuyItemIds == null) mutableListOf<Int>() else joinZeroBuyItemIds.toMutableList()
mutableJoinedIdList.add(itemId)
SpUtil.instance().putList(SpUtil.KEY_ZEROBUY_JOINED_ACTIVITY_IDS, mutableJoinedIdList)
respObj?.let {
if (it.code == CODE_HAS_JOINED_BEFORE || it.code == 0) {
// save
val joinedActivityList = if(joinZeroBuyItemIds == null) mutableListOf<Int>() else joinZeroBuyItemIds.toMutableList()
if (!joinedActivityList.contains(itemId)) {
joinedActivityList.add(itemId)
SpUtil.instance().putList(SpUtil.KEY_ZEROBUY_JOINED_ACTIVITY_IDS, joinedActivityList)
}
_ZeroBuyJoinResult.value = Result.Success(respObj?.contentObj)
// flow set
_ZeroBuyJoinResult.value = Result.Success(it.current_purchases[0])
// return
return@launch
}
}
_ZeroBuyJoinResult.value = Result.Error(Throwable("empty response"))
}
is Result.Error -> {