Android 无法在回收器视图中显示firebase数据

Android 无法在回收器视图中显示firebase数据,android,firebase,firebase-realtime-database,android-recyclerview,Android,Firebase,Firebase Realtime Database,Android Recyclerview,这是一个简单的客户查询聊天应用程序。我能够在firebase中插入数据,并通过解析tsp页面获得所需数据(这是一种临时安排,有人正在制作一个将返回json数据的api)。我无法在“回收器”视图中显示我的firebase数据。我可以在数据库中插入数据。在屏幕上只显示null/0/0 以下是我的活动代码: public class VD extends AppCompatActivity { private EditText ed; private String content;

这是一个简单的客户查询聊天应用程序。我能够在firebase中插入数据,并通过解析tsp页面获得所需数据(这是一种临时安排,有人正在制作一个将返回json数据的api)。我无法在“回收器”视图中显示我的firebase数据。我可以在数据库中插入数据。在屏幕上只显示null/0/0

以下是我的活动代码:

public class VD extends AppCompatActivity {
    private EditText ed;
    private String content;
    private RecyclerView recyclerView;
    String chatId;
    DatabaseReference myRef;

    private FirebaseDatabase database;
    private final List<Messages> mList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_vd);
        ed = findViewById(R.id.editText);
        //gets you the contents of edit text
        //


        database = FirebaseDatabase.getInstance();
        /*myRef = database.getReference("message");

        myRef.setValue("Hello vcbv World!");*/
    }

    @Override
    protected void onPause() {
        super.onPause();
        database.getReference("onlineStatus").child("status").setValue("n");
    }

    @Override
    protected void onResume() {
        super.onResume();
        database.getReference("onlineStatus").child("status").setValue("y");
    }


    public void updateDatabase(View view) {
        content = ed.getText().toString();
        //Log.d("vidhu",content);
        String[] cd = content.split("/");
        final String caseType = cd[0];
        final int caseNumber = Integer.parseInt(cd[1]);
        final int caseYear = Integer.parseInt(cd[2]);


        myRef = database.getReference("case_details");
        chatId = myRef.push().getKey();
        CaseDetails caseDetails = new CaseDetails(caseType, caseNumber, caseYear);
        myRef.child(chatId).setValue(caseDetails);
        myRef.child(chatId).child("status").setValue("");
        VD.JsoupAsyncTask jsoupAsyncTask = new VD.JsoupAsyncTask();
        jsoupAsyncTask.execute();

        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for(DataSnapshot ds : dataSnapshot.getChildren()) {
                    Messages a = dataSnapshot.getValue(Messages.class);
                    mList.add(a);
                }

                    recyclerView = findViewById(R.id.recycler_view);

                    MessagePopulator mAdapter = new MessagePopulator(mList);
                    recyclerView.setAdapter(mAdapter);
                    mAdapter.notifyDataSetChanged();
                    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
                    recyclerView.setLayoutManager(mLayoutManager);
                    recyclerView.setItemAnimator(new DefaultItemAnimator());

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

        /*myRef.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                ed.setText("");





            }





    }


}
公共类活动{
私人编辑文本;
私有字符串内容;
私人回收站;
字符串chatId;
数据库参考myRef;
私有FirebaseDatabase数据库;
private final List mList=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\U vd);
ed=findViewById(R.id.editText);
//获取编辑文本的内容
//
database=FirebaseDatabase.getInstance();
/*myRef=database.getReference(“消息”);
myRef.setValue(“你好,vcbv世界!”)*/
}
@凌驾
受保护的void onPause(){
super.onPause();
database.getReference(“onlineStatus”).child(“status”).setValue(“n”);
}
@凌驾
受保护的void onResume(){
super.onResume();
database.getReference(“onlineStatus”).child(“status”).setValue(“y”);
}
公共void updateDatabase(视图){
content=ed.getText().toString();
//Log.d(“vidhu”,内容);
字符串[]cd=content.split(“/”);
最终字符串caseType=cd[0];
final int caseNumber=Integer.parseInt(cd[1]);
final int caseYear=Integer.parseInt(cd[2]);
myRef=database.getReference(“案例详细信息”);
chatId=myRef.push().getKey();
案例详情案例详情=新案例详情(案例类型、案例编号、案例年份);
myRef.child(chatId.setValue)(案例详细信息);
myRef.child(chatId.child(“状态”).setValue(“”);
VD.jsoupsynctask jsoupsynctask=新建VD.jsoupsynctask();
jsoupAsyncTask.execute();
myRef.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
Messages a=dataSnapshot.getValue(Messages.class);
mList.添加(a);
}
recyclerView=findViewById(R.id.recycler\u视图);
MessagePopulator mAdapter=新的MessagePopulator(mList);
recyclerView.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
RecyclerView.LayoutManager mLayoutManager=新的LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(mLayoutManager);
setItemAnimator(新的DefaultItemAnimator());
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
/*myRef.addChildEventListener(新的ChildEventListener(){
@凌驾
公共void onChildAdded(DataSnapshot DataSnapshot,字符串s){
ed.setText(“”);
}
}
}
下面是我的适配器类

public class MessagePopulator extends RecyclerView.Adapter<MessagePopulator.MyViewHolder> {


    private List<Messages> messageList;
    public MessagePopulator(List<Messages> mList) {
        this.messageList = mList;
    }

    public List<Messages> getMessageList() {
        return messageList;
    }

    public void setMessageList(List<Messages> messageList) {
        this.messageList = messageList;
    }


    /*public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext()).
                inflate(R.layout.messageslist, parent, false);
        return new MyViewHolder(itemView);
        //return null;
    }*/



    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext()).
                inflate(R.layout.messageslist, parent, false);
        return new MyViewHolder(itemView);
        //return null;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        //System.out.println("position is "+ position);
        Messages msgs = messageList.get(position);
        //System.out.println("vidhu data "+msgs.getCaseType()+"/"+msgs.getCaseNumber()+"/"+msgs.getCaseYear());
        holder.caseDetail.setText(msgs.getCaseType()+"/"+msgs.getCaseNumber()+"/"+msgs.getCaseYear());
        holder.caseStatus.setText(msgs.getStatus());

    }

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


    public class MyViewHolder extends RecyclerView.ViewHolder {
        public TextView caseDetail, caseStatus;

        public MyViewHolder(View view) {
            super(view);
            caseDetail = (TextView) view.findViewById(R.id.tvCaseDetail);
            caseStatus = (TextView) view.findViewById(R.id.tvStatus);

        }
    }
}
公共类MessagePopulator扩展了RecyclerView.Adapter{ 私有列表消息列表; 公共消息填充器(列表mList){ this.messageList=mList; } 公共列表getMessageList(){ 返回消息列表; } 公共无效设置消息列表(列表消息列表){ this.messageList=messageList; } /*公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){ View itemView=LayoutInflater.from(parent.getContext())。 充气(R.layout.messages列表,父项,false); 返回新的MyViewHolder(itemView); //返回null; }*/ @凌驾 公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){ View itemView=LayoutInflater.from(parent.getContext())。 充气(R.layout.messages列表,父项,false); 返回新的MyViewHolder(itemView); //返回null; } @凌驾 公共无效onBindViewHolder(MyViewHolder,int位置){ //系统输出打印项次(“位置为”+位置); Messages msgs=messageList.get(位置); //System.out.println(“vidhu数据”+msgs.getCaseType()+“/”+msgs.getCaseNumber()+“/”+msgs.getCaseYear()); holder.caseDetail.setText(msgs.getCaseType()+“/”+msgs.getCaseNumber()+“/”+msgs.getCaseYear()); holder.caseStatus.setText(msgs.getStatus()); } @凌驾 public int getItemCount(){ 返回messageList.size(); } 公共类MyViewHolder扩展了RecyclerView.ViewHolder{ 公共文本查看案例详情、案例状态; 公共MyViewHolder(视图){ 超级(视图); caseDetail=(TextView)view.findViewById(R.id.tvCaseDetail); caseStatus=(TextView)view.findViewById(R.id.tvStatus); } } }
只需使用官方提供的FirebaseRecyclerAdapter即可

以下是官方文档中的示例代码:

FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<Chat, ChatHolder>(options) {
    @Override
    public ChatHolder 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.message, parent, false);

        return new ChatHolder(view);
    }

    @Override
    protected void onBindViewHolder(ChatHolder holder, int position, Chat model) {
        // Bind the Chat object to the ChatHolder
        // ...
    }
};
FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter(选项){
@凌驾
public ChatHolder onCreateViewHolder(视图组父级,int-viewType){
//创建ViewHolder的新实例,在本例中,我们使用自定义
//为每个项目调用R.layout.message的布局
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.message,父项,false);
返回新的聊天室持有者(视图);
}
@凌驾
受保护的void onBindViewHolder(聊天室支架、int位置、聊天室型号){
//将聊天对象绑定到ChatHolder
// ...
}
};