0
votes

kotlin.typecastException: NULL ne peut pas être lancé sur le type kotlin.collections non nullull.Mutablelist

S'il vous plaît ne marquez pas comme dupliquer, car la question est légèrement différente ---> NULL ne peut pas être distribuée à une kotlin.Collections de type non nulle. mutableliste strong>

strong> Scènes forts >: - p>

J'ai effectué un panier de suppression en utilisant RevoFit .. p>

  1. Si au moins un article est présent, il s'affiche dans RecyclERView LI> ol>

    2.Ifr cart est vide, il se bloque avec une erreur ci-dessus p>

    Voici mon code d'adaptateur: - p>

    kotlin.TypeCastException: null cannot be cast to non-null type java.util.ArrayList<com.example.store.Cart.DataCart>
        at com.example.store.Cart.AddToCart$onCreate$1.onResponse(AddToCart.kt:40)
        at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:224)
        at android.app.ActivityThread.main(ActivityThread.java:7147)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:536)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876)
    


0 commentaires

3 Réponses :


0
votes

Cochez NULL en utilisant l'opérateur Elvis de la pièce à définir dans le panier d'achat

La première ou la deuxième méthode semble être bonne


0 commentaires

1
votes

Vous ne pouvez pas trouver une raison d'utiliser mutableliste mais votre problème est incorrect type de type (Databliste comme mutableliste ) . C'est parce que NULL ne peut pas être jeté au type non nul. Vous pouvez simplifier le code à l'aide de Cartadapter de classe (PRIVATE VAL Context: context, privé VAL DATALISTE: ArrayList ?) et Supprimer Var Dataliste: Mutaveliste , Private Val Contexte: contexte et init {}


4 commentaires

Si j'utilise la liste <> Je n'aurai pas d'accès Accès accès à la méthode RemoVeat () Dans Code Si vous avez vu sous Sous TVDelete OnClickListener ....


@Wini, je veux utiliser arraylist pas mutableliste


@Wini Post Error Log. ArrayList ? est nullable


posté mon activité où IM appelant recyclereview s'il vous plaît jeter un oeil



1
votes

On dirait que cela peut être corrigé en changeant quelques lignes:

Catadapter accepter nullable argument DATALISTE , puisque votre demande d'API peut renvoyer null et le transmettre causerait NPE . xxx


puisque notre Datataliste est nullable et appeler datalist.size peut lancer NPE Nous devons faire un appel sûr à l'aide de ? . Et si c'est null, nous venons de retourner 0, raconter recyclerview qu'il y a 0 articles. xxx


besoin de faire Val rétro : Liste nullable, car réponse.body () ?. Data peut retourner null . Nous venons de convertir rétro à Mutablelist à l'aide de la fonction d'extension tomutablelist () , avec un opérateur d'appel sécurisé "" . Si rétro est null alors null la valeur sera transmis à cartadapter , et puisque notre adaptateur traite null Valeur Il procédera sans erreurs xxx


supprimer init () fonction de Cartadapter et ajoutez var (doit être Val ) avant les arguments du constructeur. Init () est redondant ici car vous l'utilisez pour affecter des valeurs aux variables des éléments redondants et en double. En ajoutant Var (doit être val ) aux arguments du constructeur, ils seront attribués des valeurs et être disponibles en tant que variables de membre, juste après la construction d'objets.


depuis Datataliste est nullable et nous devons déterminer sa taille pour que l'appels sécurisée logique supplémentaire soit utilisé, et si son null retour true - vide xxx

ou utiliser xxx

qui est plus propre et devrait fonctionner aussi.


Remarque: Personnellement, je ne vous suggérez pas de rétinitaliser l'adaptateur chaque fois que vous devez modifier les valeurs. Au lieu de créer des éléments VAL = ArrayListOf () notifier les méthodes.


8 commentaires

L'application s'écrase avec kotlin.typecastException: NULL ne peut pas être lancé sur le type non nul Kotlin.collections.mutablelist Ligne indiquant à -> générateurataliste (rétro comme mutabliste )


Pouvez-vous supprimer complètement init {} la méthode? Cela semble un peu redondant et voyez ce qui se passe?


Si je supprimais cet init {} ... il affiche une erreur à Var Datalamiste privé: Mutablelist PRIVATE VAL Contexte: Contexte -> Montrant qu'il doit être initialisé


Supprimer ces deux: Datataliste Var privé: Mutablelist PRIVATE VAL Contexte: contexte. Et ajouter "var" avant les arguments du constructeur. De cette façon, vous devriez être capable de les accéder à la dupliquer en tant que variables de membre global. Je peux dire que vous avez longtemps l'utilisateur Java :)


kotlin.kotlinnullPointereException à la ligne -> si (Datataliste? .istéty () !!) {


remplacer par si (Datataliste? .isempty ()?: vrai). Assertion non nulle "!!" le cause


im acceptant votre réponse ... vous donnant une prime ... mais je veux que vous modifiez votre réponse avec plus d'explication ...


D'accord. Merci! Je vais :)