[JAVA] Je souhaite utiliser FireBase pour afficher une chronologie comme Twitter

Je souhaite afficher une chronologie comme Twitter

Étant donné que le processus d'acquisition de données de Firebase est un processus asynchrone, lors de l'affichage d'images et de données de base de données dans un ordre spécifique comme la chronologie Twitter, si vous les affichez sans réfléchir, les images se déplaceront, de sorte que les données seront affichées de manière récursive. La méthode recommandée est de l'obtenir.

java.Timeline.java


public class Timeline extends AppCompatActivity{

     //Liste pour mettre les données de la base de données récupérée
     private ArrayList<String> getDate = new ArrayList<>();
    
     //Obtenir une référence d'image
     private ArrayList<StorageReference> spaceRef = new ArrayList<>();

     //Création d'objet DatabaseReference
     private DatabaseReference mDatabase;

     //Stockage FireBase
     private FirebaseStorage storage = FirebaseStorage.getInstance();

     //espace de rangement
     private StorageReference storageRef = storage.getReference();

    //Variable de comptage
    private int Count = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

          //Obtenir une référence à la base de données
          mDatabase = FirebaseDatabase.getInstance().getReference();

          //Événements FireBase
          mDatabase.addValueEventListener(new ValueEventListener() {
               @Override
               public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                //Les données que vous souhaitez obtenir
                Object getObject = postSnapshot.child(/*Les données que vous souhaitez obtenir*/).getValue();

                //Null contrôle des données acquises
                if(getObject != null) {

                       //Stocker dans la liste
                       getDate.add(getObject .toString());

                       //Obtenir une référence d'image
                       spaceRef.add(storageRef.child(/*Image de référence*/));

                       //Traitement de l'image à laquelle vous souhaitez accéder
                       getPhoto();

                }
          }
     }
    //Acquisition d'image
    private void getPhoto() {
        int Listsize = spaceRef.size();
        //Évitez de regarder hors de la liste
        if(Count < Listsize) {
            final long ONE_MEGABYTE = 1024 * 1024;
            //Événement de stockage
            spaceRef.get(Count).getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
                @Override
                public void onSuccess(byte[] bytes) {
                      //Obtenir une image miniature
                      Bitmap bit = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);


                      /*Mettre le processus à ajouter à la vue de liste*/

                      Count++;

                      getPhoto();

                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception exception) {
                }
            });
     }
}

J'ai déjà créé la vue de liste d'origine, et je l'ai écrite pour ceux qui trébuchent un peu plus loin, donc c'est tout à fait approprié (je pense que le traitement réellement utilisé n'est pas utile), mais pour le moment j'ai réussi à le faire .. De plus, comme il s'agit de java, je pense personnellement qu'il vaut mieux avoir une vérification nulle solide. Mon ami l'a publié sur Github, je vais donc mettre un lien ici. StutdentTimeline.java et TeacherStudent.java utilisent en fait cette méthode. https://github.com/wasabimochi/ivycon Quand j'en ai envie, je l'écrirai soigneusement et je le posterai (je ne dis pas ça). Veuillez commenter si vous avez des questions. à plus.

Recommended Posts

Je souhaite utiliser FireBase pour afficher une chronologie comme Twitter
Je souhaite utiliser le balayage arrière sur un écran qui utilise XLPagerTabStrip
Je souhaite développer une application web!
Je veux écrire un joli build.gradle
Je souhaite utiliser DBViewer avec Eclipse 2018-12! !!
Je veux écrire un test unitaire!
Je veux utiliser @Autowired dans Servlet
J'ai essayé d'utiliser Selenium comme JQuery
Je souhaite afficher un PDF chinois (coréen) avec des rapports fins
[Ruby] Je veux faire un saut de méthode!
Je veux utiliser java8 forEach avec index
Je veux écrire une simple répétition d'une chaîne de caractères
Je souhaite utiliser les fonctions pratiques de Clojure dans Kotlin
Je veux appeler une méthode d'une autre classe
Je veux faire quelque chose comme "cls" en Java
Je veux utiliser NetBeans sur Mac → Je peux l'utiliser!
Je veux aussi utiliser des coquillages à Laradock! !!
Je veux aussi utiliser ES2015 avec Java! → (´ ・ ω ・ `)
Je souhaite afficher le nom de l'affiche du commentaire
Je souhaite surveiller un fichier spécifique avec WatchService
Je souhaite définir une fonction dans la console Rails
[Swift] Je veux faire quelque chose comme sprinftf de C
Je veux cliquer sur une broche GoogleMap dans RSpec
Je souhaite créer une annotation générique pour un type
Je souhaite ajouter une fonction de suppression à la fonction de commentaire
Je souhaite utiliser PowerMock dans une classe qui combine des tests paramétrés et des tests ordinaires
[Rails] Je souhaite afficher la destination du lien de link_to dans un onglet séparé
[Débutant] Je souhaite modifier le fichier de migration-Comment utiliser la restauration-
[Java] Je souhaite convertir un tableau d'octets en un nombre hexadécimal
Je veux trouver un chemin relatif dans une situation où Path est utilisé
Je veux convertir des caractères ...
Je souhaite implémenter une fonction d'édition des informations produit ~ part1 ~
Je souhaite créer un modèle spécifique d'ActiveRecord ReadOnly
Je veux faire une liste avec kotlin et java!
Je veux appeler une méthode et compter le nombre
Je veux créer une fonction avec kotlin et java!
Je souhaite créer un formulaire pour sélectionner la catégorie [Rails]
Je souhaite utiliser la méthode de désinfection autre que View.
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
Je veux donner un nom de classe à l'attribut select
Je veux créer un fichier Parquet même en Ruby
Implémentation d'une API forte pour "Je veux afficher ~~ à l'écran" avec un simple CQRS
Étudiez Java: utilisez Timer pour créer quelque chose comme un minuteur de bombe
Je souhaite rechercher de manière récursive des fichiers dans un répertoire spécifique
Je veux créer un bouton avec un saut de ligne avec link_to [Note]
Je souhaite ajouter une fonction de navigation avec ruby on rails
J'ai essayé d'écrire du code comme une déclaration de type en Ruby
Je veux extraire entre des chaînes de caractères avec une expression régulière