Obtenez la valeur et non l'unité dans le bloc try catch dans Kotlin en utilisant Android

nimondo

Rénovation Android Kotlin Coroutine.

Je veux obtenir la valeur de getPropeties pour l'insérer dans la base de données. J'ai besoin d'aide pour cela? J'ai besoin que la valeur soit une instance de User et non la valeur unitaire. Ma classe viewModel est donnée ci-dessous.

    import android.app.Application
    import android.content.Context
    import android.util.Log
    import androidx.lifecycle.LiveData
    import androidx.lifecycle.MutableLiveData
    import androidx.lifecycle.ViewModel
    import com.example.android.marsrealestate.database.AppDatabase
    import com.example.android.marsrealestate.database.User
    import com.example.android.marsrealestate.database.UserDao
    import com.example.android.marsrealestate.network.UsersApi
    import com.example.android.marsrealestate.network.UsersProperty
    import kotlinx.coroutines.*
    import retrofit2.Call
    import retrofit2.Callback
    import retrofit2.Response


    class OverviewViewModel(val database: UserDao,
                            application: Application): ViewModel() {
        private var viewModelJob = Job()
        private val coroutineScope = CoroutineScope(
                viewModelJob + Dispatchers.Main )
        private var user = MutableLiveData<User?>()
        // The internal MutableLiveData String that stores the most recent response
        private val _response = MutableLiveData<String>()

        // The external immutable LiveData for the response String
        val response: LiveData<String>
            get() = _response

        init {
            getUsersProperties()

        }

        private fun getUsersProperties(){
            coroutineScope.launch {
                var getPropertiesDeferred =
                        UsersApi.retrofitService.getProperties()
                try {
                    var listResult = getPropertiesDeferred.await()
                    //database.insertUser(listResult)
                    _response.value =
                            "Success: ${listResult} Mars properties retrieved"

                } catch (e: Exception) {
                    _response.value = "Failure: ${e.message}"
                }
            }
        }

        override fun onCleared() {
            super.onCleared()
            viewModelJob.cancel()
        }
    }

Merci

Pritam Kadam

Vous utilisez launch,

Le lancement est utilisé pour effectuer un tir asynchrone et oublier le type d'opérations où vous n'êtes pas intéressé par le résultat de l'opération.

Au lieu de cela, vous pouvez utiliser async,

Async est utilisé pour effectuer un calcul asynchrone où vous attendez un résultat du calcul dans le futur

private fun getUsersProperties() =
            coroutineScope.async {
                var getPropertiesDeferred =
                        UsersApi.retrofitService.getProperties()
                try {
                    var listResult = getPropertiesDeferred.await()
                    //database.insertUser(listResult)
                    _response.value =
                            "Success: ${listResult} Mars properties retrieved"

                } catch (e: Exception) {
                    _response.value = "Failure: ${e.message}"
                }
              // =================================================
              // ========= Return whatever result you want =======
              // =================================================
            }

pouvez-vous également montrer quel est le type de signature getProperties?

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Comment ajouter try / catch dans le code Kotlin en utilisant Android Studio?

en utilisant le bloc try catch dans le service Web et en envoyant le résultat dans le contrôleur angularjs

Comparez deux colonnes dans le bloc de données et mettez en évidence la valeur en utilisant le style pandas

Erreur non interceptée dans le bloc try catch

Exception non interceptée dans le bloc try/catch

Variable non initialisée dans le bloc try catch `finally`

Exception non interceptée dans le bloc try catch

Comment utiliser le choix dans le bloc try catch en utilisant Apache Camel dans une route avec Java DSL

Comment retourner l'objet IEnumerable dans le bloc try catch?

Flask et sqlalchemy: Obtenez le fichier téléchargé en utilisant le chemin stocké dans la base de données

Obtenez la clé et la valeur dans json en utilisant Object.keys Angular

Comparaison de la valeur dans le dataframe et calcul d'un autre attribut en l'utilisant

Parcourez une table et obtenez la valeur dans asp.net core en utilisant jquery

analyse récursive dans json et obtenez la valeur en utilisant ansible

Assert dans le bloc try catch

Constructeur dans le bloc Try / Catch

L'attente de deux promesses dans le bloc try/catch entraîne un "rejet de promesse non géré"

Retour de la méthode, dans le bloc "try" ou après le bloc "catch"?

le bloc try catch ne fonctionne pas en cas de non-correspondance d'entrée dans java

Validez et obtenez l'utilisateur en utilisant le jeton jwt dans une vue ou un consommateur

Comment puis-je transmettre le paramètre et la valeur pour publier l'API en utilisant la modernisation dans Android ?

Qu'est-ce qui ferait échouer la gestion des exceptions d'un bloc try / catch malgré l'atterrissage de l'exécution dans le bloc catch?

Obtenez la date et le mois en utilisant un nombre dans JAVA

Recherchez une valeur spécifique dans le fichier xml et obtenez le bloc entier c #

Impossible d'attraper l'erreur PHP file_get_contents en utilisant le bloc try catch

Rendu du même composant à la fois dans le bloc try et catch dans React sans perdre le focus des champs dans ReactJS

Obtenez des doublons dans l'objet et fusionnez la valeur

Comment revenir à l'instruction suivante dans le bloc try pour try-catch C #

Rejet des doublons Nodejs (un non géré et dans un bloc try/catch)

TOP liste

  1. 1

    comment afficher un bouton au-dessus d'un autre élément ?

  2. 2

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  3. 3

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

  4. 4

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  5. 5

    Conversion double en BigDecimal en Java

  6. 6

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Passer la taille d'un tableau 2D à une fonction ?

  9. 9

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  10. 10

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  11. 11

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  12. 12

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  13. 13

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  14. 14

    Exporter la table de l'arborescence vers CSV avec mise en forme

  15. 15

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  16. 16

    Créer un système Buzzer à l'aide de python

  17. 17

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  18. 18

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  19. 19

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  20. 20

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  21. 21

    Microsoft.WebApplication.targets

chaudétiquette

Archive