Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要帮助在android中编写视图模型代码,以获取改装后的数据吗_Android_Kotlin_Android Mvvm - Fatal编程技术网

需要帮助在android中编写视图模型代码,以获取改装后的数据吗

需要帮助在android中编写视图模型代码,以获取改装后的数据吗,android,kotlin,android-mvvm,Android,Kotlin,Android Mvvm,我是android新手,一直在为视图模型编写代码,我不知道如何管理来自存储库和远程服务器的数据,以下是我迄今为止所做的尝试,如有任何帮助,将不胜感激 这是我的存储库数据源 class RepositoryDataSource constructor(private val roomDataSource: QuranLocalDataSource, private val remoteDataSource: RemoteData

我是android新手,一直在为视图模型编写代码,我不知道如何管理来自存储库和远程服务器的数据,以下是我迄今为止所做的尝试,如有任何帮助,将不胜感激

这是我的存储库数据源

class RepositoryDataSource constructor(private val roomDataSource: QuranLocalDataSource,
                                   private val remoteDataSource: RemoteDataSource) : Repository {

    override fun saveParaData(paraData: List<ParaData>) { roomDataSource.getQuranDao().insertParaData(paraData) }

    override fun saveSurahData(surahData: List<SurahData>) { roomDataSource.getQuranDao().insertSurahData(surahData) }

    //get Parah list from db
    override fun getParaFromDB(): LiveData<List<ParaData>> = roomDataSource.getQuranDao().getParaData()

    //get SurahList from dm
    override fun getSurahDataFromDB(): LiveData<List<SurahData>> = roomDataSource.getQuranDao().getSurahData()

    //get parahList from server
    override fun getParahListFromAPI() {
        remoteDataSource.getParahListFromAPI()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({ result ->

                Completable.fromAction {
                    deleteParaData()
                    val data = result.body()
                    saveParaData(data?.get(0)!!.paraData)
                }
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(object : CompletableSubscriber {
                        override fun onSubscribe(@NonNull subscription : Subscription) {

                        }

                        override fun onCompleted() {
                            Log.i("Repository onCompleted", "DataSource has been Populated")
                        }

                        override fun onError(@NonNull e: Throwable) {
                            e.printStackTrace()
                            Log.e("onError", "DataSource hasn't been Populated")
                        }
                    })

            },
                { error -> Log.e("ERROR", "{$error.message}") },
                { Log.d("getParahListFromAPI", "completed") })
    }


    //get surahList from server
    override fun getSurahListFromAPI() {

    }
}

按照指南操作。你可以通过谷歌获得todo应用程序示例。嗨@Abdul Rahman Rathore我向你推荐这门课程太棒了@Abu Noman谢谢我这么做了
interface Repository {

    fun saveParaData(paraData: List<ParaData>)

    fun getParaFromDB(): LiveData<List<ParaData>>


    fun saveSurahData(surahData: List<SurahData>)

    fun getSurahDataFromDB(): LiveData<List<SurahData>>


    fun getParahListFromAPI()
    fun getSurahListFromAPI()



}
class ParahViewModel :  ViewModel(){}