Maintenir un ListView où chaque élément de la liste a une relation de un à plusieurs

La façon dont mon application est configurée est que j'ai un ListView, maintenu par un CursorLoader, des messages créés par les utilisateurs. Chaque publication comporte des commentaires d'utilisateurs qui lui sont associés. Chaque listitem a une vision de texte personnalisée en bas où les commentaires peuvent être défilés (avec un glissement vers la droite ou vers la gauche). Dans chaque fenêtre de texte personnalisée, vous trouverez une liste des commentaires associés à sa publication particulière. C'est comme les commentaires sur l'application Google+, sauf que les éléments sont défilables. Les commentaires sont stockés dans une table de base de données distincte des messages.

Le problème que je pose est que chaque fois que BindView s'appelle, j'interroge la base de données et récupère un curseur avec les commentaires associés et l'ajoute à la liste de visualisation personnalisée. Cela semble vraiment inefficace pour interroger la table de base de données des commentaires pour chaque élément. Donc, je me demande s'il y aurait un moyen idéal de gérer cela. Mon code ressemble à quelque chose comme:

  • Com.firebase.client.FirebaseException: Impossible d'analyser le nœud avec la classe CLASS_NAME android
  • Comment supprimer instantanément SPACE d'un edittext si un utilisateur appuie sur l'espace?
  • Existe-t-il un modèle sur la méthode Random ()?
  • Comment inclure un fichier .so lib dans Intellij IDEA pour un projet Android?
  • Widget non teinté sur Lollipop
  • Android - Outil de test UI Fragment indépendant
  • public void bindView(View view, Context context, Cursor cursor) final String rowid = cursor.getString(cursor.getColumnIndexOrThrow(Database.ROWID)); Cursor commentcursor = c.getContentResolver().query(DatabaseProvider.CONTENT_URI_COMMENTTABLE, freeWriteCommentColumns, Database.PARENTPOSTROWID + " =?", new String[]{rowid}, null); commentcursor.moveToFirst(); while (commentcursor.isAfterLast() == false){ //get comment //add to comment text view list } 

    J'ai examiné CursorJoiners mais cela ne semble pas utile. J'ai joué avec JOINS, mais cela rend le nombre de lignes beaucoup plus grand qu'il ne le faut. Je joue actuellement avec un support pour le curseur du tableau des commentaires qui est créé lorsque l'adaptateur est créé et défini comme une variable globale. Cela semble être une avenue décente parce que je n'ai pas à recommencer à chaque fois. Je ne sais pas seulement comment gérer cette situation.

  • Quelle est la différence entre les installations totales et les installations actives sur le marché Android?
  • Android crée des configurations pour plusieurs clients
  • Comment obtenir la documentation de l'API Android dans Eclipse
  • Android: clickable = "true" signifie qu'il n'est pas cliquable?
  • Comment interagir avec tous les objets Bundle
  • Modification du niveau d'API Android Studio
  • One Solution collect form web for “Maintenir un ListView où chaque élément de la liste a une relation de un à plusieurs”

    Je sais que tu l'as essayé, mais c'est le chemin à parcourir. J'avais presque le même problème, même un plus grand parce que le mien était avec JOIN et ensuite un MergeCursor. Mais revenons à votre problème: bindView () est appelé l'interface utilisateur et vous faites des appels DB sur le thread UI, c'est une mauvaise pratique et, en plus, vous exécutez sur tout le curseur. J'aurais JOIN la requête pour la publication et concaté les commentaires au niveau SQL du chargement, puis j'utiliserais un curseur pour les messages et les commentaires et tout irait beaucoup mieux.

    Comment concatter la chaîne au niveau SQL? Tous les commentaires ensemble? Eh bien, je vais regarder et modifier ma réponse.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.