Как получить пользу от Firebase для recycleView - PullRequest
1 голос
/ 27 мая 2020

это изображение данных firebase это изображение журнала, которое я получаю в logcat

mDatabase=FirebaseDatabase.getInstance();
mRef=mDatabase.getReference("items").child("0").child("snippet");
mChildEventListner = new ChildEventListener() {

    @Override
    public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
        for (DataSnapshot Snapshot : dataSnapshot.getChildren()) {
            CategoriesModelClass user = dataSnapshot.getValue(CategoriesModelClass.class);
            Log.d("kkk", "" + user);
            title_description.add(user);
        }
        categoriesRecycleView.notifyDataSetChanged();
    }

Это мой код из activitymain и я не знаю, следует ли мне запускать запрос для заголовка и описания, или он будет извлекать его из l oop?

это код моего класса модели

public class CategoriesModelClass {
    String title,description;

    public CategoriesModelClass(){

    }

    public CategoriesModelClass(String title, String description) {
        this.title = title;
        this.description = description;
    }

    public String getTitle() {
        return title;
    }

    public String getDescription() {
        return description;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

и я пытаюсь установить эти данные в моем представлении корзины, мне нужны только заголовок и описание

1 Ответ

0 голосов
/ 27 мая 2020

Чтобы получить значения description и title, используйте следующие строки кода:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference snippetRef = rootRef.child("items").child("0").child("snippet");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        CategoriesModelClass user = dataSnapshot.getValue(CategoriesModelClass.class);
        Log.d("kkk", "" + user.getTitle());

        //Get the values out of the user object
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
    }
};
snippetRef.addListenerForSingleValueEvent(valueEventListener);

Видите, нет необходимости l oop поверх узла snippet , и это потому, что нам нужно получить данные в соответствии с типом хранимого объекта.

Если в узле 0 будет несколько элементов, используйте следующие строки кода:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference zeroRef = rootRef.child("items").child("0");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            CategoriesModelClass user = ds.getValue(CategoriesModelClass.class);
            Log.d("kkk", "" + user.getTitle());
        }

        //Get the values out of the user object
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
    }
};
zero.addListenerForSingleValueEvent(valueEventListener);
...