Это своего рода функция чата в приложении, когда пользователи с разными идентификаторами отправляют сообщения, и она сохраняется в базе данных в режиме реального времени.
Я сохранил данные в базе данных реального времени, но когда я пытаюсьполучить и отобразить его не отображается. Я не уверен, что данные сначала извлекаются.
Я попытался сохранить данные через приложение, и они сохраняются в базе данных Firebase.
Планировка:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".chatroom">
<Button
android:id="@+id/send_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="9dp"
android:layout_marginLeft="9dp"
android:layout_marginEnd="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="8dp"
android:text="SEND"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/text_send" />
<EditText
android:id="@+id/text_send"
android:layout_width="286dp"
android:layout_height="49dp"
android:layout_marginEnd="9dp"
android:layout_marginRight="9dp"
android:layout_marginBottom="8dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/send_button"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/msgview"
android:layout_width="390dp"
android:layout_height="699dp"
android:layout_marginEnd="3dp"
android:layout_marginRight="3dp"
android:text="look here"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Код:
package com.example.sdl;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.Iterator;
public class chatroom extends AppCompatActivity {
FirebaseDatabase database=FirebaseDatabase.getInstance();
Button send_button;
EditText text_send;
TextView msgview;
String ctext_send,cmsgview;
String sdomain,ssubdomain,sprofession,sbranch,srollno,spass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chatroom);
SharedPreferences sp = getApplication().getSharedPreferences("user", Context.MODE_PRIVATE);
sdomain=sp.getString("domain"," xyz");
ssubdomain=sp.getString("subdomain","xyz ");
sprofession=sp.getString("profession"," xyz");
sbranch=sp.getString("branch","xyz ");
srollno=sp.getString("rollno","xyz ");
spass=sp.getString("pass"," xyz");
send_button =(Button) findViewById(R.id.send_button);
send_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openchat();
}
});
msgview=(TextView) findViewById(R.id.msgview);
text_send=(EditText) findViewById(R.id.text_send);
DatabaseReference ref = database.getReference().child(sdomain).child(ssubdomain).child(sbranch).child("chat");
ref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, String s) {
append_chat_conv(dataSnapshot);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, String s) {
append_chat_conv(dataSnapshot);
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private String chatmsg;
private void append_chat_conv(DataSnapshot dataSnapshot){
Iterator i=dataSnapshot.getChildren().iterator();
while (i.hasNext()){
chatmsg= (String) ((DataSnapshot)i.next()).getValue();
msgview.append(chatmsg);
}
}
public void openchat(){
ctext_send=text_send.getText().toString();
Task<Void> ref=database.getReference().child(sdomain).child(ssubdomain).child(sprofession).child(sbranch).child("chat").push().child(srollno).setValue(ctext_send);
}
}