0
votes

Recyclerview ne met pas à jour lorsque je supprime les articles

J'ai un panier d'achat où j'ajoute des produits, mais j'ai un problème avec ça. Lorsque je repousse le bouton pour supprimer un élément, la vue Recycler n'est pas mise à jour après avoir appelé également notifyDataChanged (). Lorsque je navigue à nouveau à mon panier, l'article n'est pas là car est supprimé. Mais je ne veux pas voir le direclty quand je suis dans mon secteur d'achat. Voici mon adaptateur: xxx

et dans mon fragment: xxx xxx


0 commentaires

3 Réponses :


0
votes

notifydatastetchanged ici dans la boucle de vue: xxx

update

garder ce que je vous ai dit et faire sûr que la liste que vous appelez sur la méthode .remove (indextoremove) est la liste réelle que vous avez transmise à votre adaptateur pour remplir des données, ce qui signifie que la liste que vous avez utilisée dans getItemCount ()

En d'autres termes:

Je ne suis pas sûr si artikullobject est la liste que vous devez supprimer l'objet De, vous devez utiliser la liste principale que vous avez utilisée pour remplir l'adaptateur.


0 commentaires

0
votes

Créer un ISHOPPINGCART CODE> FORT> Interface qui sera implémenté par votre fragment code> strong>. Nous voulons conserver la logique dans le fragment code> strong>. (Personnellement, je déplacerais cette logique à la vue ViewModel Code> Strong> mais cela se passera sur une tangente.)

IshoppingCart h3>
fun DeleteItemToCart(itemId: String) {
    dataset.removeItemWithItemId(itemId)
    notifyDataSetChanged()
}


0 commentaires

0
votes

Vous pouvez supprimer un élément de l'adaptateur dans une vue de la vue onclick () CODE> auditeur d'une certaine ligne de l'écran Recyclerview à l'aide de getAdapterposition () code> qui retourne la position de la ligne cliquée; Donc, vous ajouteriez: xxx pré>

modifie de sorte que votre code: p> xxx pré>

mise à jour: strong> GetAdapterposition () n'est pas trouvé comme une méthode p> blockQuote>

Le gettadapterposition () code> est un Méthode de visualisation code> à l'aide de la classe Adapter, de sorte que vous pouvez simplement transférer la vue . OnLongClickListener Code> Pour être dans la liste de visée sur mesure code> au lieu de la personnalisation recyclerview.adapter code> Adaptateur. P>

class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {

    View removeProduct;

    MyViewHolder(@NonNull View listItem) {
        super(listItem);
        // caching views
        removeProduct = listItem.findViewById(...);

        // Listen to removing a product 
        removeProduct.setOnClickListener(v -> {
            SharedPreferences preferences = mContext.getSharedPreferences(ITEMS_PREF, Context.MODE_PRIVATE);
            SharedPreferences.Editor mEditor = preferences.edit();
            Gson gson = new Gson();
            String json = preferences.getString("artikujtShporta", "");
            ArrayList<Artikujt> artikullObject = gson
                    .fromJson(json, new TypeToken<ArrayList<Artikujt>>(){}.getType());

            // remove current row of the clicked item
            artikullObject.remove(getAdapterPosition());
            notifyItemRemoved(getAdapterPosition());

        });

    }

}


3 commentaires

getAdapterposition () n'est pas trouvé comme une méthode


@Eralddeveloper ma faute; S'il vous plaît vérifier la réponse mise à jour, j'ai supposé des trucs comme "MyViewModel" car il n'est pas fourni dans la question.


@Eralddeveloper Pouvez-vous fournir le code de votre adaptateur et de votre visual