[JAVA] Ich möchte FireBase verwenden, um eine Zeitleiste wie Twitter anzuzeigen

Ich möchte eine Zeitleiste wie Twitter anzeigen

Da der Datenerfassungsprozess von Firebase ein asynchroner Prozess ist, werden beim Anzeigen von Bildern und Datenbankdaten in einer bestimmten Reihenfolge wie der Twitter-Timeline die Bilder verschoben, wenn Sie sie ohne nachzudenken anzeigen, sodass die Daten rekursiv angezeigt werden. Der empfohlene Weg ist, es zu bekommen.

java.Timeline.java


public class Timeline extends AppCompatActivity{

     //Liste, um die Daten der abgerufenen Datenbank abzulegen
     private ArrayList<String> getDate = new ArrayList<>();
    
     //Bildreferenz abrufen
     private ArrayList<StorageReference> spaceRef = new ArrayList<>();

     //DatabaseReference-Objekterstellung
     private DatabaseReference mDatabase;

     //FireBase-Speicher
     private FirebaseStorage storage = FirebaseStorage.getInstance();

     //Lager
     private StorageReference storageRef = storage.getReference();

    //Zählvariable
    private int Count = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

          //Verweis auf Datenbank abrufen
          mDatabase = FirebaseDatabase.getInstance().getReference();

          //FireBase-Ereignisse
          mDatabase.addValueEventListener(new ValueEventListener() {
               @Override
               public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                //Daten, die Sie erhalten möchten
                Object getObject = postSnapshot.child(/*Daten, die Sie erhalten möchten*/).getValue();

                //Nullprüfung der erfassten Daten
                if(getObject != null) {

                       //In Liste speichern
                       getDate.add(getObject .toString());

                       //Bildreferenz abrufen
                       spaceRef.add(storageRef.child(/*Referenzbild*/));

                       //Verarbeitung des Bildes, zu dem Sie gehen möchten
                       getPhoto();

                }
          }
     }
    //Bildaufnahme
    private void getPhoto() {
        int Listsize = spaceRef.size();
        //Vermeiden Sie es, von der Liste wegzuschauen
        if(Count < Listsize) {
            final long ONE_MEGABYTE = 1024 * 1024;
            //Speicherereignis
            spaceRef.get(Count).getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
                @Override
                public void onSuccess(byte[] bytes) {
                      //Holen Sie sich ein Miniaturbild
                      Bitmap bit = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);


                      /*Fügen Sie den Prozess zur Listenansicht hinzu*/

                      Count++;

                      getPhoto();

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

Ich habe bereits die ursprüngliche Listenansicht erstellt und sie für diejenigen geschrieben, die noch einen Schritt weiter stolpern. Daher ist dies durchaus angemessen (ich denke, dass die tatsächlich verwendete Verarbeitung nicht hilfreich ist), aber vorerst habe ich es geschafft .. Da es sich um Java handelt, denke ich persönlich, dass es besser ist, eine solide Nullprüfung durchzuführen. Mein Freund hat es auf Github veröffentlicht, also werde ich hier einen Link setzen. StutdentTimeline.java und TeacherStudent.java verwenden diese Methode tatsächlich. https://github.com/wasabimochi/ivycon Wenn ich Lust dazu habe, schreibe ich es ordentlich und poste es (das sage ich nicht). Bitte kommentieren Sie, wenn Sie Fragen haben. wir sehen uns.

Recommended Posts

Ich möchte FireBase verwenden, um eine Zeitleiste wie Twitter anzuzeigen
Ich möchte Swipeback auf einem Bildschirm verwenden, der XLPagerTabStrip verwendet
Ich möchte eine Webanwendung entwickeln!
Ich möchte ein schönes build.gradle schreiben
Ich möchte DBViewer mit Eclipse 2018-12 verwenden! !!
Ich möchte einen Unit Test schreiben!
Ich möchte @Autowired in Servlet verwenden
Ich habe versucht, Selen wie JQuery zu verwenden
Ich möchte ein chinesisches (koreanisches) PDF mit dünnen Berichten anzeigen
[Ruby] Ich möchte einen Methodensprung machen!
Ich möchte Java8 für jeden mit Index verwenden
Ich möchte eine einfache Wiederholung einer Zeichenkette schreiben
Ich möchte die praktischen Funktionen von Clojure in Kotlin nutzen
Ich möchte eine Methode einer anderen Klasse aufrufen
Ich möchte so etwas wie "cls" in Java machen
Ich möchte NetBeans auf einem Mac verwenden → Ich kann es verwenden!
Ich möchte auch in Laradock Fischschalen verwenden! !!
Ich möchte ES2015 auch in Java verwenden! → (´ ・ ω ・ `)
Ich möchte den Namen des Posters des Kommentars anzeigen
Ich möchte eine bestimmte Datei mit WatchService überwachen
Ich möchte eine Funktion in der Rails Console definieren
[Swift] Ich möchte so etwas wie Cs Sprint machen
Ich möchte in RSpec auf einen GoogleMap-Pin klicken
Ich möchte eine generische Anmerkung für einen Typ erstellen
Ich möchte der Kommentarfunktion eine Löschfunktion hinzufügen
Ich möchte PowerMock in einer Klasse verwenden, die parametrisierte Tests und gewöhnliche Tests kombiniert
[Rails] Ich möchte das Linkziel von link_to auf einer separaten Registerkarte anzeigen
[Anfänger] Ich möchte die Migrationsdatei ändern.
[Java] Ich möchte ein Byte-Array in eine Hexadezimalzahl konvertieren
Ich möchte einen relativen Pfad in einer Situation finden, in der Pfad verwendet wird
Ich möchte Zeichen konvertieren ...
Ich möchte eine Produktinformationsbearbeitungsfunktion ~ part1 ~ implementieren
Ich möchte ein bestimmtes Modell von ActiveRecord ReadOnly erstellen
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Methode aufrufen und die Nummer zählen
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich möchte ein Formular erstellen, um die Kategorie [Schienen] auszuwählen
Ich möchte eine andere Desinfektionsmethode als Ansicht verwenden.
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Ich möchte dem select-Attribut einen Klassennamen geben
Ich möchte eine Parkettdatei auch in Ruby erstellen
Implementierung einer starken API für "Ich möchte ~~ auf dem Bildschirm anzeigen" mit einfachem CQRS
Java lernen: Verwenden Sie Timer, um so etwas wie einen Bomben-Timer zu erstellen
Ich möchte rekursiv nach Dateien in einem bestimmten Verzeichnis suchen
Ich möchte mit link_to [Hinweis] eine Schaltfläche mit einem Zeilenumbruch erstellen.
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
Ich habe versucht, Code wie eine Typdeklaration in Ruby zu schreiben
Ich möchte mit einem regulären Ausdruck zwischen Zeichenketten extrahieren