1

Ich habe eine Chat-Anwendung, die mit Firebase gemacht wird. Es funktioniert gut. Aber manche Benutzer senden Slangs oder solche Sachen. Ich benutze Firebase Recyclerview. Meine Verbindung ist direkt zur Datenbank. So kann ich nicht überprüfen, ob die Nachricht gut oder schlecht ist, bevor Daten hinzugefügt werden.Zusammenführen von lokalen Daten mit Firebase-Datenbank und Anzeigen in Recyclerview

Was ich tun möchte, ist, möchte ich diese Daten an einen anderen Ort senden. Nach der Überprüfung mithilfe der Cloud-Funktionen möchte ich sie der ursprünglichen Chat-Room-Datenbank hinzufügen.

Bis zu diesem Schritt habe ich keine Probleme. Aber wenn Benutzer eine Nachricht sendet. Ich möchte nicht, dass der Benutzer wartet, bis die Daten aktualisiert werden. Cloud-Funktionen dauert 2-3 Sekunden für mich. Ich möchte diese Daten lokal mit einem Sendestatus hinzufügen und sie dann aktualisieren, wenn sie in der Chat-Room-Datenbank aktualisiert werden.

So Was ist der beste Weg, das zu tun ..

Es ist nichts falsch mit meinem Code. Es ist nur grundlegende Feuerbasis Adapter ..

Query query = FirebaseDatabase.getInstance() 
            .getReference() 
            .child("rooms").child("Off-Topic").child("chat") 
            .limitToLast(500); 
    firebaseOptions = new FirebaseRecyclerOptions.Builder<ChatData>() 
      .setQuery(query, ChatData.class) 
      .build(); 

    chatAdapter = new FirebaseRecyclerAdapter<ChatData, ChatHolder>(firebaseOptions) { 
     @Override 
     protected void onBindViewHolder(ChatHolder holder, int position, ChatData model) { 

     } 

     @Override 
     public ChatHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.sender_text_message, parent, false); 


        return new ChatHolder(v); 
      } 

    }; 

Antwort

0

Die einfachste Möglichkeit für Sie, dieses Problem zu lösen wäre eine boolean Variable auf Ihre ChatData Klasse hinzuzufügen sein. Diese Variable (nennen wir sie isGood) wäre falsch, wenn die Nachricht gesendet wird und würde wahr werden, wenn sie von Ihrer Cloud-Funktion aktualisiert wurde.

So onBindViewHolder Ihr Adapters wäre:

@Override 
     protected void onBindViewHolder(ChatHolder holder, int position, ChatData model) { 
      if(model.isGood()) 
      holder.textView.setText(model.getMessage()); //edit this line as needed 
      else 
      holder.textView.setText("sending..."); //replace textView with the name of your actual TextView 
     } 
Verwandte Themen