android - 无法在 textview 中查看从 firebase 检索的数据
问题描述
这是应用程序中的一种聊天功能,具有不同 ID 的用户发送消息并实时存储在数据库中。
我已将数据存储到实时数据库中,但是当我尝试检索并显示时,它没有显示。我不确定数据是否首先被检索。
我尝试通过应用程序存储数据,并将其存储在 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);
}
}
解决方案
推荐阅读
- python - Discord bot 侦听特定频道上的命令
- python - 根据 YouTube 上 Bucky 的 Django 教程,使用未找到参数 '('',)' 的 'favorite' 反向
- powershell - 在 Lotus Notes 文档中呈现 RichText
- python - 已安装 Python 3.6.5,但文件以 python 2.7 作为默认值
- java - 如何使用带有推理规则的耶拿联合模型
- database - Oracle 存储过程不工作,可能是因为语法
- python - 显示Mesh3d时防止自动拉伸/缩放轴
- javascript - 在 Angular 中使用外部库
- python - 如何使用python发送带有数据有效负载的ACK
- javascript - 如何在我的登陆页面上以文本形式显示我的网站访问者的位置?