无法将聊天数据从Firebase获取到recyclerview

时间:2018-12-04 16:39:22

标签: android firebase android-studio firebase-realtime-database

我是android studio和firebase的新手,现在正尝试制作一个简单的聊天应用程序。

我的代码可以将聊天数据发送到firebase,但是无法从firebase取回数据,因此应用程序中没有任何更新。

注意:没有崩溃,只是在我输入聊天内容时,屏幕上什么也没出现。

enter image description here

有人可以指出我做错了什么地方吗?

这是我的代码

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);

    }
}

0 个答案:

没有答案