【问题标题】:RecyclerView not fetching data from firebase databaseRecyclerView 未从 firebase 数据库中获取数据
【发布时间】:2019-11-20 21:22:10
【问题描述】:

我正在制作一个应用程序,我必须从 firebase 获取一些数据并在 recyclerview 中显示。但是 textView 字段保持为空并且不显示任何数据。下面是数据库结构。我想获取“AlphabetMatching”下节点的数据,但未能获取。 Recycler 显示了我为行所做的布局,但没有来自数据库的数据。


活动类:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alphabet_matching_perf);



    mlinearLayoutManager= new LinearLayoutManager(this);
    //mlinearLayoutManager.setReverseLayout(true);
   // mlinearLayoutManager.setStackFromEnd(true);


    recyclerView=findViewById(R.id.am_recycler);



    db_ref= FirebaseDatabase.getInstance().getReference("Performance");
    user= FirebaseAuth.getInstance().getCurrentUser();
    userID=user.getUid();

    alphabetMatchingPerfRef= db_ref.child(userID).child("AlphabetMatching");


    //Toast.makeText(this, alphabetMatchingPerfRef.toString(), Toast.LENGTH_SHORT).show();



    showData();




}

public void showData()
{

    options=new FirebaseRecyclerOptions.Builder<amaw>().setQuery(alphabetMatchingPerfRef,amaw.class).build();

    firebaseRecyclerAdapter= new FirebaseRecyclerAdapter<amaw, ViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull amaw model) {
            holder.setDetails(getApplicationContext(),model.getDate(),model.getTime(),model.getScore());


        }

        @NonNull
        @Override
        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

            View itemView= LayoutInflater.from(parent.getContext()).inflate(R.layout.performancelayout,parent,false);

            ViewHolder holder = new ViewHolder(itemView);
            return holder;
        }
    };

    recyclerView.setLayoutManager(mlinearLayoutManager);
    firebaseRecyclerAdapter.startListening();
    recyclerView.setAdapter(firebaseRecyclerAdapter);
}

观众类:

public class ViewHolder extends RecyclerView.ViewHolder {

View mView;



public ViewHolder(@NonNull View itemView) {
    super(itemView);


    mView=itemView;

    itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });


}

public void setDetails(Context ctx,String date, String time, String score)
{
    TextView mdate=mView.findViewById(R.id.date_box);
    TextView mtime=mView.findViewById(R.id.time_box);
    TextView mscore=mView.findViewById(R.id.score_box);
}

}


AMAW 课程

public class amaw {

String date;
String score;
String time;

String username;

public amaw(String datee, String time, String score) {
    this.date = datee;
    this.time = time;
    this.score = score;
}

public amaw() {

}
public String getDate() {
    return date;
}

public void setDate(String datee) {
    this.date = datee;
}


public String getScore() {
    return score;
}

public void setScore(String score) {
    this.score = score;
}

public String getTime() {
    return time;
}

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

}

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    改变这个:

    
    public void setDetails(Context ctx,String date, String time, String score)
    {
        TextView mdate=mView.findViewById(R.id.date_box);
        TextView mtime=mView.findViewById(R.id.time_box);
        TextView mscore=mView.findViewById(R.id.score_box);
    }
    

    进入这个:

    
    public void setDetails(Context ctx,String date, String time, String score)
    {
        TextView mdate=mView.findViewById(R.id.date_box);
        TextView mtime=mView.findViewById(R.id.time_box);
        TextView mscore=mView.findViewById(R.id.score_box);
        mdate.setText(date);
        mtime.setText(time);
        mscore.setText(score);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多