gpt4 book ai didi

java - FirebaseRecyclerAdapter 不会覆盖 onDataChanged

转载 作者:行者123 更新时间:2023-11-29 19:04:07 27 4
gpt4 key购买 nike

如果我的数据库仍在加载,则显示加载对话框。我想让我的聊天应用程序正常工作。我发现我的问题将通过覆盖 FirebaseRecyclerAdapter 中的 onDataChanged() 来解决,如下面的代码

new FirebaseRecyclerAdapter(...) {

@Override
protected void populateViewHolder(...) {...}

@Override
protected void onDataChanged() {

}

};

但问题是我无法将 onDataChanged() 覆盖到我的适配器。我该如何解决这个问题?请在下面查看我的屏幕截图。

image

更新:这是我与我的问题相关的全部代码(其他代码不需要发布)。

    public void btn_discussion() {
FRRA = new FirebaseRecyclerAdapter<Message, MessageViewHolder>(
Message.class,
R.layout.discussion_q_and_answer,
ActivityDiscussion.MessageViewHolder.class,
MyDatabase
) {

@Override
protected void populateViewHolder(ActivityDiscussion.MessageViewHolder viewHolder, Message model, int position) {
viewHolder.setContent(model.getContent());
viewHolder.setUsername(model.getUsername());
viewHolder.setTime(myConstructor.LongToDate(model.getTime()));
}

@Override
protected void onDataChanged() {
//Write something here
}

};
msgList.setAdapter(FRRA);
msgList.smoothScrollToPosition(FRRA.getItemCount());
}

RecyclerView.ViewHolder

  public static class MessageViewHolder extends RecyclerView.ViewHolder {
View view;
public MessageViewHolder(View itemView) {
super(itemView);
this.view = itemView;
}

private void setContent(String content) {

TextView msg = view.findViewById(R.id.comment);
msg.setText(content);
}

private void setUsername(String username) {

TextView msg = view.findViewById(R.id.tv_user);
msg.setText(username);
}

private void setTime(String time) {

TextView msg = view.findViewById(R.id.tv_time);
msg.setText(time);
}
}

setter和getter Message.java

public class Message {
private String content;
private String Username;
private String time;
public Message() {}
public Message(String mcontent, String musername, String mtime) {
this.content = mcontent;
this.Username = musername;
this.time = mtime;
}

public String getContent() {
return content;
}

public void setContent(String message) {
this.content = message;
}

public String getUsername() {
return Username;
}

public void setUsername(String Username) {
this.Username = Username;
}

public String getTime() {
return time;
}

public void setTime(String time) {
this.time = time;
}

}

最佳答案

您正在使用旧版本的 firebaseui 并且在旧版本中 onDataChanged 不在覆盖方法中。您可以通过单击 ALT+ INS 查看属于此类的所有覆盖方法。

你需要使用最新的那个:

implementation 'com.firebaseui:firebase-ui-database:3.1.1'

然后您可以使用onDataChanged 和其他方法。升级时,您还必须使用 FirebaseRecyclerOptions,有关详细信息,请在此处查看本指南:

FirebaseUI for Realtime Database

关于java - FirebaseRecyclerAdapter 不会覆盖 onDataChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47862615/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com