Запутанность базы данных в реальном времени в Firebase - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь создать базу данных в реальном времени с помощью firebase, и моя информация не хранится так, как она должна быть.Данные JSON форматируются следующим образом:

enter image description here

Как избавиться от нескольких экземпляров djProfile?И что означает эта случайная строка букв и цифр в этом иерархическом дереве?

Вот мои классы андроида, которые я использую, чтобы попытаться получить эту информацию и сохранить ее в моем представлении переработчика базы данных:

Класс DjProfile:

public class DjProfile
{
    String djName, uniqueID;


    public DjProfile(){}

    public DjProfile(String djName, String uniqueID)
    {
        this.djName = djName;
        this.uniqueID = uniqueID;
    }

    public String getDjName() { return djName; }
    public String getUniqueID() {return uniqueID; }
}

Информация RecyclerView:

RecyclerView recyclerView = findViewById (R.id.dj_result_recycler);recyclerView.setLayoutManager (новый LinearLayoutManager (this));

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    Query query = rootRef.child("djProfile");

    FirebaseRecyclerOptions<DjProfile> firebaseRecyclerOptions = new FirebaseRecyclerOptions.Builder<DjProfile>()
            .setQuery(query, DjProfile.class)
            .build();

    firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<DjProfile, ResultsViewHolder>(firebaseRecyclerOptions)
    {

        @NonNull
        @Override
        public ResultsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.searchitem_list, viewGroup, false);

            return new ResultsViewHolder(view);
        }

        @Override
        protected void onBindViewHolder(@NonNull ResultsViewHolder holder, int position, @NonNull DjProfile model) {
            holder.setDjProfile(model);
        }
    };
    recyclerView.setAdapter(firebaseRecyclerAdapter);
}

@Override
protected void onStart()
{
    super.onStart();
    firebaseRecyclerAdapter.startListening();
}

@Override
protected void onStop()
{
    super.onStop();
    if(firebaseRecyclerAdapter != null)
    {
        firebaseRecyclerAdapter.stopListening();
    }
}





public static class ResultsViewHolder extends RecyclerView.ViewHolder
{
    private TextView djNameView;

    public ResultsViewHolder(View itemView)
    {
        super(itemView);
        djNameView = itemView.findViewById(R.id.result_dj);
    }

    void setDjProfile(DjProfile profile)
    {
        String djName = profile.getDjName();
        djNameView.setText(djName);
    }
}

Как я могу получить только имя внутри этого djProfile?Что мне не хватает?

Любая обратная связь с благодарностью!

1 Ответ

1 голос
/ 26 марта 2019

что означает эта случайная строка букв и цифр в этом иерархическом дереве?

Ключ, начинающийся с -Lar, создается каждый раз, когда вы вызываете push() для ссылки. Это Firebase-эквивалент индекса массива. Чтобы узнать больше о них, см. 2 ^ 120 способов обеспечить уникальные идентификаторы и Рекомендации: массивы в базе данных Firebase .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...