从 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 = "",
)