如何在 Android Studio 的视图模型中将这个数据类带到这些函数中

问题描述 投票:0回答:0

所以这是一个我正在进行的项目,我想保持项目的结构完整。我想我的 API 调用是正确的,因为该项目使用的是 RxJava。我的问题是将 repo 中的调用提升到 ViewModel 中的函数中。它应该从 api 调用中获取图像和视频的计数。我目前(在帮助下)对其进行了硬编码,但现在我正在对它进行 API 调用。

这是数据模型

data class MediaMaxCount(val apiMediaMaxCount: ApiMediaMaxCount){
    val imageCount = apiMediaMaxCount.imageCount
    val videoCount = apiMediaMaxCount.videoCount
}

回购乐趣

 override fun getMediaMaxCountUC(context: Context): Flowable<UiResponse<List<MediaMaxCount>>> {
        return GetResourceUtil.getResourceFromDataRepository(context,
                object : OnGetFromRepositoryCallBack<List<MediaMaxCount>, ApiMediaMaxCount>{
                    override fun onGetFromLocalRepository(context: Context): Flowable<List<MediaMaxCount>> {
                        return Flowable.just(arrayListOf())
                    }

                    override fun isLocalDataValid(localData: List<MediaMaxCount>): Boolean {
                        return localData.isNotEmpty()
                    }

                    override fun convertApiDateFormatToLocalDataFormat(remoteData: MutableList<ApiMediaMaxCount>): List<MediaMaxCount> {
                        val deviceList = mutableListOf<MediaMaxCount>()
                        for (apiMediaMaxCount in remoteData) {
                            deviceList.add(MediaMaxCount(apiMediaMaxCount))
                        }
                        return deviceList
                    }

                    override fun onGetFromRemoteRepository(context: Context): Flowable<ApiResponse<ApiMediaMaxCount>> {
                        return getUserInfoFromStorage(context).flatMap { userInfo ->
                            siteSurveyRemoteResource.getMediaMaxCount(
                                userInfo.userCredential.token
                            )
                        }
                    }

                    override fun onSaveToLocalRepository(localData: List<MediaMaxCount>): Completable {
                        return Completable.complete()
                    }

                }
            )
    }

视图模型乐趣

  fun getImageCount(pos: Int): Int {
        val count = uiMediaContents.filter { item ->
            uiMediaContents.indexOf(item) != pos && item.mediaType == MediaType.MEDIA_TYPE_IMAGE
        }.count()
        return count
    }
    fun getVideoCount(pos: Int): Int{
        val count = uiMediaContents.filter { item ->
            uiMediaContents.indexOf(item) != pos && item.mediaType == MediaType.MEDIA_TYPE_VIDEO
        }.count()
        return count
    }


    override fun uploadMediaClick(dataPos: Int) {
        _mediaContentEditStartClick.value = Event(
            MediaOption(dataPos, MediaOptionType.OPTION_PICK_MEDIA, getImageCount(dataPos), getVideoCount(dataPos))
        )
    }

    override fun takeMediaClick(dataPos: Int) {
        _mediaContentEditStartClick.value = Event(
            MediaOption(dataPos, MediaOptionType.OPTION_TAKE_MEDIA, getImageCount(dataPos), getVideoCount(dataPos))
        )
    }

欢迎任何提示或解决方案。谢谢你。

android kotlin mvvm rx-java
© www.soinside.com 2019 - 2024. All rights reserved.