Получить данные из базы данных и добавить в представление карты - PullRequest
0 голосов

Я хочу получить данные из firebase и добавить их в cardView. Когда я получил заголовок и описание, заголовок отображается, но мое описание не отображается.

Это мой модельный класс:

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);

Это моя структура базы:

image

1 Ответ

0 голосов
/ 22 мая 2019

Посмотрите @PropertyName("title") документацию . Несмотря на то, что документ плохо документирован, это означает, что вам нужна эта аннотация для (де) сериализации объектов модели. См. этот вопрос для более подробной информации

По сути, вы можете использовать его для сопоставления свойства в Firebase с полем в вашем классе Model. В вашем случае это стало бы что-то вроде этого (не проверено):

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