java - RecyclerView 没有从 firebase 数据库中获取数据
问题描述
我正在制作一个应用程序,我必须从 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);
}
}
阿玛班
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;
}
}
解决方案
改变这个:
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);
}
推荐阅读
- javascript - 为特定数据集设计正则表达式
- python - 大熊猫中分组的条件比率
- react-native - 如何访问主组件外的导航?
- wordpress - 主要内容上方的wordpress页面标题
- android - android项目中的ReportPortal
- azure-active-directory - Azure AD Connect 组织迁移
- google-search-console - Google Search Console:随机资源的获取和渲染失败
- ruby-on-rails - 用户中的 NoMethodError #show undefined method `username' for nil:NilClass
- c# - Silverlight - 工具包中的 ComboBox 和其他字段:DataForm 在 .xaml.cs 中不可用
- performance - 有没有更快的方法通过 PowerShell 脚本移动图片