Android Firebase RecycleView适配器即使在notifyDataSetChanged()之后也未更新

Android Firebase RecycleView适配器即使在notifyDataSetChanged()之后也未更新,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我已为特定firebase数据库引用注册了一个侦听器。一旦数据被“更改”,它将显示一条toast消息,并应将chatMessage添加到列表中,并在recycle视图中显示该项。但是,仅显示toast消息,但不会将该项添加到回收视图中。我相信这是由RecycleView适配器的问题引起的,但我无法确定位置 public void getMessageByMessageUUID(final MessageAdapter messageAdapter, final String chatUUID,

我已为特定firebase数据库引用注册了一个侦听器。一旦数据被“更改”,它将显示一条toast消息,并应将chatMessage添加到列表中,并在recycle视图中显示该项。但是,仅显示toast消息,但不会将该项添加到回收视图中。我相信这是由RecycleView适配器的问题引起的,但我无法确定位置

public void getMessageByMessageUUID(final MessageAdapter messageAdapter, final String chatUUID, final String messageUUID) {
    MESSAGE_REFERENCE.child(chatUUID).child(messageUUID).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            ChatMessage message = dataSnapshot.getValue(ChatMessage.class);
            Toast.makeText(getApplicationContext(),
                    "Welcome " + chatUUID + " " + message.getMessageText(),
                    Toast.LENGTH_LONG)
                    .show();
            messageAdapter.addMessage(message);

            messageAdapter.notifyDataSetChanged();
        }
适配器类

private ArrayList<ChatMessage> messages = new ArrayList<ChatMessage>();
protected Context context;

public MessageAdapter(final String chatUUID, DatabaseReference databaseReference) {
    databaseReference.addChildEventListener(new ChildEventListener()...);
}

public void addMessage(ChatMessage chatMessage) {
    messages.add(chatMessage);

    notifyDataSetChanged();
}

@Override
public MessageHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    Context context = parent.getContext();
    LayoutInflater inflater = LayoutInflater.from(context);

    MessageHolder viewHolder = null;
    View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.messages, parent, false);
    viewHolder = new MessageHolder(layoutView, messages);

    return viewHolder;
}

@Override
public void onBindViewHolder(MessageHolder holder, int position) {
    holder.messageImage.setImageResource(R.drawable.user_pacific);
    holder.messageText.setText(messages.get(position).getMessageText());
}

@Override
public int getItemCount() {
    return this.messages.size();
}

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
    super.onAttachedToRecyclerView(recyclerView);
}
private ArrayList messages=new ArrayList();
受保护的语境;
public MessageAdapter(最终字符串chatUUID,DatabaseReference DatabaseReference){
databaseReference.addChildEventListener(新的ChildEventListener()…);
}
public void addMessage(ChatMessage ChatMessage){
messages.add(chatMessage);
notifyDataSetChanged();
}
@凌驾
public MessageHolder onCreateViewHolder(视图组父级,int-viewType){
Context=parent.getContext();
LayoutFlater充气机=LayoutFlater.from(上下文);
MessageHolder-viewHolder=null;
View layoutView=LayoutInflater.from(parent.getContext()).flate(R.layout.messages,parent,false);
viewHolder=新消息持有者(布局视图,消息);
返回视图持有者;
}
@凌驾
public void onBindViewHolder(MessageHolder,int位置){
holder.messageImage.setImageResource(R.drawable.user_-pacific);
holder.messageText.setText(messages.get(position.getMessageText());
}
@凌驾
public int getItemCount(){
返回此.messages.size();
}
@凌驾
附加ToRecyclerView(RecyclerView RecyclerView)上的公共无效{
super.onAttachedToRecyclerView(recyclerView);
}

问题不在于firebase代码或适配器,而在于LinearLayoutManager。我相信代码是在屏幕外添加的。我通过改变来解决这个问题

LinearLayoutManager manager = new LinearLayoutManager(this);

LinearLayoutManager manager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);