android - 未能从 firebase 获取聊天数据到 recyclerview
问题描述
我是 android studio 和 firebase 的新手,现在正在尝试制作一个简单的聊天应用程序。
我的代码可以将聊天数据发送到 firebase,但未能从 firebase 取回数据,因此应用程序中没有任何更新。
注意:没有崩溃,只是当我输入聊天时,屏幕上没有出现任何内容。
有人能指出我在哪里做错了吗?
这是我的代码
主要活动
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
EditText editText;
RelativeLayout addBtn;
DatabaseReference ref;
FirebaseRecyclerAdapter<ChatMessage,chat_rec> adapter;
FirebaseRecyclerOptions<ChatMessage> options;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView)findViewById(R.id.recyclerView);
editText = (EditText)findViewById(R.id.editText);
addBtn = (RelativeLayout)findViewById(R.id.addBtn);
recyclerView.setHasFixedSize(true);
final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(linearLayoutManager);
ref = FirebaseDatabase.getInstance().getReference();
ref.keepSynced(true);
addBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String message = editText.getText().toString().trim();
if (!message.equals("")) {
ChatMessage chatMessage = new ChatMessage(message, "user");
ref.child("chat").push().setValue(chatMessage);
}
editText.setText("");
}
});
Query text = ref.child("chat").limitToLast(100);
options = new FirebaseRecyclerOptions.Builder<ChatMessage>().setQuery(text, ChatMessage.class).build();
adapter = new FirebaseRecyclerAdapter<ChatMessage, chat_rec>(options) {
@Override
protected void onBindViewHolder(chat_rec viewHolder, int position, ChatMessage model) {
// Bind the Chat object to the ChatHolder
// ...
if (model.getMsgUser().equals("user")) {
viewHolder.rightText.setText(model.getMsgText());
viewHolder.rightText.setVisibility(View.VISIBLE);
viewHolder.leftText.setVisibility(View.GONE);
}
else {
viewHolder.leftText.setText(model.getMsgText());
viewHolder.rightText.setVisibility(View.GONE);
viewHolder.leftText.setVisibility(View.VISIBLE);
}
}
@Override
public chat_rec onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new instance of the ViewHolder, in this case we are using a custom
// layout called R.layout.message for each item
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.msglist, parent, false);
return new chat_rec(view);
}
};
recyclerView.setAdapter(adapter);
}
}
chat_rec.java
Public class chat_rec extends RecyclerView.ViewHolder {
TextView leftText,rightText;
public chat_rec(View itemView){
super(itemView);
leftText = (TextView)itemView.findViewById(R.id.leftText);
rightText = (TextView)itemView.findViewById(R.id.rightText);
}
}
解决方案
推荐阅读
- python-3.x - 如何在python中使用selenium Xpath从tr标签中获取所有td [3]标签
- node.js - NodeJS、TypeScript、Mongoose 无法使用 FindById 获取文档
- node.js - AdonisJs:Route.on() 与 Route.get()
- plsql - 如何使用 DBMS_XMLGEN 创建 XML,然后使用单个 SYS_REFCURSOR 获取和打印?
- javascript - 如何删除在zend中选中的单选按钮默认值
- php - 缺少 PHP 环境设置以从 require 调用中读取变量
- mysql - SELECT CASE param_name END CASE INTO @var 在存储过程中使用参数分配列
- c# - 获取应用程序的第一个密钥保管库机密值时出现异常
- php - 从条件 laravel 5.7 的模型中获取数据
- python - 面网识别不正确