我是android studio和firebase的新手,现在正尝试制作一个简单的聊天应用程序。
我的代码可以将聊天数据发送到firebase,但是无法从firebase取回数据,因此应用程序中没有任何更新。
注意:没有崩溃,只是在我输入聊天内容时,屏幕上什么也没出现。
有人可以指出我做错了什么地方吗?
这是我的代码
MainActivity
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);
}
}