从 firebase 获取数据并添加到卡片视图
Fetch data from firebase and add to card view
我想从 firebase 获取数据并将其添加到 cardView。
当我获取标题和描述时,显示了标题但没有显示我的描述。
这是我的模型class:
public class News {
public String mtitle, mdesc;
public News(){
}
public News(String title, String desc) {
mtitle = title;
mdesc = desc;
}
public String getTitle() {
return mtitle;
}
public void setTitle(String title) {
mtitle = title;
}
public String getDesc() {
return mdesc;
}
public void setDesc(String desc) {
mdesc = desc;
}
}
这是我的控制器:
//FR options and adapter
options = new FirebaseRecyclerOptions.Builder<News>()
.setQuery(newsRef, News.class).build();
adapter = new FirebaseRecyclerAdapter<News, NewsViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull NewsViewHolder holder, int position, @NonNull News model) {
holder.mtitle.setText(model.getTitle());
holder.mdesc.setText(model.getDesc());
}
@NonNull
@Override
public NewsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.news_row, viewGroup, false);
return new NewsViewHolder(view);
}
};
GridLayoutManager gridLayoutManager = new GridLayoutManager(getApplicationContext(), 1);
mNewsList.setLayoutManager(gridLayoutManager);
adapter.startListening();
mNewsList.setAdapter(adapter);
这是我的 firebase 结构:
查看 @PropertyName("title")
documentation. All-tough it is poorly documented, it indicates that you need this annotation to (de)serialize your model objects. See 了解更多详情
基本上,您可以使用它将 Firebase 中的 属性 与模型 class 中的字段相匹配。在你的情况下它会变成这样(未经测试):
public class News {
@PropertyName("title")
public String mtitle;
@PropertyName("description")
public String mDesc;
public News(String title, String desc) {
mtitle = title;
mdesc = desc;
}
}
或者,当您切换到 kotlin 时:
data class News(
@set:PropertyName("title") var title: String = "",
@set:PropertyName("description") var desc: String = "",
)
我想从 firebase 获取数据并将其添加到 cardView。 当我获取标题和描述时,显示了标题但没有显示我的描述。
这是我的模型class:
public class News {
public String mtitle, mdesc;
public News(){
}
public News(String title, String desc) {
mtitle = title;
mdesc = desc;
}
public String getTitle() {
return mtitle;
}
public void setTitle(String title) {
mtitle = title;
}
public String getDesc() {
return mdesc;
}
public void setDesc(String desc) {
mdesc = desc;
}
}
这是我的控制器:
//FR options and adapter
options = new FirebaseRecyclerOptions.Builder<News>()
.setQuery(newsRef, News.class).build();
adapter = new FirebaseRecyclerAdapter<News, NewsViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull NewsViewHolder holder, int position, @NonNull News model) {
holder.mtitle.setText(model.getTitle());
holder.mdesc.setText(model.getDesc());
}
@NonNull
@Override
public NewsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.news_row, viewGroup, false);
return new NewsViewHolder(view);
}
};
GridLayoutManager gridLayoutManager = new GridLayoutManager(getApplicationContext(), 1);
mNewsList.setLayoutManager(gridLayoutManager);
adapter.startListening();
mNewsList.setAdapter(adapter);
这是我的 firebase 结构:
查看 @PropertyName("title")
documentation. All-tough it is poorly documented, it indicates that you need this annotation to (de)serialize your model objects. See
基本上,您可以使用它将 Firebase 中的 属性 与模型 class 中的字段相匹配。在你的情况下它会变成这样(未经测试):
public class News {
@PropertyName("title")
public String mtitle;
@PropertyName("description")
public String mDesc;
public News(String title, String desc) {
mtitle = title;
mdesc = desc;
}
}
或者,当您切换到 kotlin 时:
data class News(
@set:PropertyName("title") var title: String = "",
@set:PropertyName("description") var desc: String = "",
)