java - 从 Firebase 读取数据没有设置器字段错误 Firebase
问题描述
您好,我正在尝试从当前登录用户的所有笔记中检索数据。
但是我不断收到这个错误,我不知道如何解决这个问题。我正在使用 Viewholder recyclerView。我还有 2 个 xml 文件,1 个用于视图,一个用于 cardview 布局。但是我知道问题出在我的代码部分,我错过了读出数据的地方。我看到了一个教程,我们做了同样的事情,他还创建了带有用户 ID 的帖子并像这样读出它们
下面列出的错误:
W/ClassMapper: No setter/field for -LxFfo5HuRPQsBUSiFuc found on class com.example.examapplikation.Models.NotesList No setter/field for -LxFfqThHtNWsk9bD5Zb found on class com.example.examapplikation.Models.NotesList No setter/field for -LxI2a7Osg8WYK1E5VJ4 found on class com.example.examapplikation.Models.NotesList
这些是我帖子的IDS:
我的主要活动
enter code here
private RecyclerView recyclerView; //https://camposha.info/android-firebase-realtime-database-with-recyclerview/
private FloatingActionButton addNotePageButton;
private FirebaseAuth firebaseAuth;
FirebaseDatabase database;
DatabaseReference todoDb;
FirebaseRecyclerOptions<NotesList> options;
FirebaseRecyclerAdapter<NotesList, NoteViewHolder> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
recyclerView = findViewById(R.id.recyclerView);
addNotePageButton = findViewById(R.id.fab_button_addPage);
firebaseAuth = FirebaseAuth.getInstance(); // get inSTACE
database = FirebaseDatabase.getInstance();
todoDb = database.getReference("NoteList");
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager( new LinearLayoutManager(this) );
showTask();
addNotePageButton.setOnClickListener(new View.OnClickListener() { // Float button click
@Override
public void onClick(View v) {
Intent intent = new Intent(HomeActivity.this, NoteInputActivity.class);
startActivity(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
adapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
adapter.stopListening();
}
private void showTask(){
options = new FirebaseRecyclerOptions.Builder<NotesList>()
.setQuery(todoDb,NotesList.class)
.build();
adapter = new FirebaseRecyclerAdapter<NotesList, NoteViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull NoteViewHolder holder, int position, @NonNull NotesList model) {
holder.text_title.setText(model.getText());
holder.text_content.setText(model.getText());
}
@NonNull
@Override
public NoteViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View itemView = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.notes_each_row,viewGroup,false);
return new NoteViewHolder(itemView);
}
};
recyclerView.setAdapter(adapter);
}
这是我的模型课:
enter code here
public class NotesList {
private String title;
private String text;
public NotesList(){
}
public NotesList(String title, String text){
this.title=title;
this.text= text;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
这是我的 ViewHolder 的代码:
enter code here
public class NoteViewHolder extends RecyclerView.ViewHolder {
public TextView text_title, text_content;
public NoteViewHolder(@NonNull View itemView){
super (itemView);
text_title = itemView.findViewById(R.id.text_title);
text_content = itemView.findViewById(R.id.text_content);
}
}
数据库结构图片: 在此处输入图片描述
解决方案
您必须在查询中再上一层才能获得NotesList
. 更改您的查询,如下所示:
todoDb = database.getReference("NoteList").child("6Dp...Py1");
如果6Dp...Py1
是您当前用户的UID
然后使用
todoDb = database.getReference("NoteList").child(firebaseAuth.getCurrentUser().getUid());
推荐阅读
- python - sqlite3 基于纪元时间获取数据
- ios - 无法快速从核心数据存储中保存/检索数据
- spring-integration - Spring Integration - 将参数和流从 WebFlux 入站网关传递到 WebFlux 出站网关
- typeorm - TypeORM 使用 repository.createQueryBuilder() 而不是 repository.find() 加载相关实体
- java - 是否可以通过对 apk 进行逆向工程来破解应用程序?
- angular - Ionic/Angular http.post 将被多次调用
- vb.net - 替代使用存根摆脱交叉引用
- css - Firefox 打印 CSS 溢出问题
- python - 如何生成不重复的 5 个字符的字符串组合(2 个不同的数字、两个相等的字母和 1 个字母)
- c# - 即使输入与模拟输入值不匹配,最小起订量函数调用也始终返回值