Faire la somme d'une liste - Kotlin Android

Bonjour à tous !

Je viens vers vous pour obtenir un peu d’aide si vous le voulez bien.
J’essaie de créer une app à usage perso pour mon budget.

J’ai plusieurs recyclerview pour afficher des listes de dépenses, budgets, épargnés, revenus…

Je n’arrive pas à faire la somme d’une liste et la faire apparaître dans un TextView…
Je suis un peu perdu, je débute complètement. Je « bidouille » en regardant des vidéos tuto !

Voici le code du Fragment (si c’est bien là qu’il faut le faire…) :

class FragmentExpense : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_expense, container, false)

    //créer la liste
    val expenseList = arrayListOf<ItemModel>()
    expenseList.add(ItemModel("depense1", "GMF", 74.46, false))
    expenseList.add(ItemModel("depense2", "Pension", 180.00, false))
    expenseList.add(ItemModel("depense3", "Forfait Téléphone", 12.00, false))
    expenseList.add(ItemModel("depense4", "Mensualité Téléphone", 46.00, false))
    expenseList.add(ItemModel("depense5", "Compte Joint", 500.00, false))
    expenseList.add(ItemModel("depense6", "Netflix", 7.99, false))
    expenseList.add(ItemModel("depense7", "Garderie", 0.00, false))
    expenseList.add(ItemModel("depense8", "Mensualité Macbook", 290.90, false))


    //récupérer le recyclerview
    val expenseRecyclerView = view.findViewById<RecyclerView>(R.id.expenseRecyclerView)
    expenseRecyclerView.adapter = ExpenseAdapter(expenseList, R.layout.fragment_expense)
    return view


    //faire la somme des dépenses
    fun expenseSum(expenseTotalText : Double) {
        val expenseTotalText = view.findViewById<TextView>(R.id.totalExpenseView)
        expenseTotalText.text = "${expenseList.sumOf { it.amount }}"
    }
}

}

Mon TextView a pour ID : totalExpenseView

MVC MVC MVC MVC MVC !!!

Bon cela ne te dis probablement rien, c’est un terme venant de l’univers iOS. Je ne connait pas l’équivalent pour Android/Kotlin, mais le principe est le même pour toutes les interfaces graphiques.

En résumé, l’idée est qu’une interface graphique (la Vue) n’est que le reflet de données stockées en mémoire (le Modèle).

Pour faire des calculs on n’accède PAS aux données des composants graphiques, mais uniquement aux informations du Modèle. Dans ton cas, le modèle de données c’est ta liste expenseList. Pour calculer ta somme, tu dois faire une boucle et lire le contenu du tableau en MEMOIRE !

Bon, c’est un résumé très succinct de l’architecture MVC, mais le principe est là. Si l’utilisateur entre une information, on ne la traite pas directement, on l’enregistre dans le modèle, avant d’avertir l’application qu’une modification a été faite, et qu’il faut refaire les calculs et actualiser l’affichage.

Salut Draken et merci de prendre le temps d’une réponse.

Effectivement, ça fait partie des questions que je me pose : l’architecture d’un code.
Ou doivent être les fonctions, les variables, où les récupérer, …
Je n’ai pas encore la vision globale d’une app