как получить только ключи от firebase и поместить их в утилита - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть эта структура данных для создания расписания автобусов и обеспечения времени.я не уверен, как я могу получить ключи, чтобы получить время

  "Schedules" : {
"Apu-to-vista" : {
  "11:00" : "true",
  "12:00" : "true",
  "13:00" : "true",
  "13:30" : "true",
  "14:00" : "true",
  "14:30" : "true",
  "15:00" : "true",
  "15:30" : "true",
  "16:00" : "true",
  "16:30" : "true",
  "17:00" : "true",
  "17:30" : "true",
  "18:00" : "true",
  "18:30" : "true",
  "19:00" : "true",
  "20:30" : "true"
},
"vista-to-apu" : {
  "11:35" : "true",
  "12:00" : "true",
  "13:00" : "true",
  "13:15" : "true",
  "14:00" : "true",
  "14:30" : "true",
  "15:00" : "true",
  "15:30" : "true",
  "16:00" : "true",
  "16:30" : "true",
  "17:00" : "true",
  "17:30" : "true",
  "18:00" : "true",
  "18:30" : "true",
  "19:20" : "true",
  "20:30" : "true"
}
}

Я хочу получить ключи, если я сделаю mDatabase.getReference("Schedules").child("Apu-to-vista")

это то, что я пытался до сих пор

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

    view = inflater.inflate(R.layout.vista, container, false);
    mDatabase = FirebaseDatabase.getInstance();
    fromAPU = mDatabase.getReference("Schedules").child("Apu-to-vista");
    toAPU = mDatabase.getReference("Schedules").child("Vista-to-apu");
    recyclerView = (RecyclerView) view.findViewById(R.id.fromAPURecycler);
    recyclerView.setHasFixedSize(true);
    layoutManager = new LinearLayoutManager(getActivity());
    recyclerView.setLayoutManager(layoutManager);

    adapter = new FirebaseRecyclerAdapter<Schedule, ViewHolder>(
            Schedule.class, R.layout.card_view, ViewHolder.class, toAPU.orderByKey()
    ){
        @Override
        protected void populateViewHolder(ViewHolder viewHolder, Schedule model, int position) {
            viewHolder.mTime.setText(getRef(position).getKey());
        }
    };
    recyclerView.setAdapter(adapter);
    return view;
}

public static class ViewHolder extends RecyclerView.ViewHolder {
    public final TextView mTime;

    public ViewHolder(View itemView) {
        super(itemView);
        mTime = (TextView) itemView.findViewById(R.id.text_holder);

    }
}

Я попытался с помощью адаптера переработчика Firebase создать класс, состоящий только из String timeText, и поместить его в представление переработчика.однако есть ошибка, ошибка говорит, что адаптер не подключен: пропуск макета

Я только начинающий в Android, кто-то может мне помочь.спасибо

1 Ответ

0 голосов
/ 18 ноября 2018

Чтобы получить ключи от Apu-to-vista :

fromAPU.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot apuToVistaSnapshot) {
                for (DataSnapshot scheduleSnapshot : apuToVistaSnapshot.getChildren()){
                    String key  = scheduleSnapshot.getKey();
                    // Do whatever you want with this key
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

Firebase отправляет вам данные, упакованные в объект DataSnapshot.После вызова addListenerForSingleValueEvent() по ссылке fromAPU Firebase отправит вам apuToVistaSnapshot, который включает в себя все данные узла "Apu-to-vista".

Вызвав getChildren() для этой ссылки, вы можете перебрать ее дочерние DataSnapshot экземпляры и получить ключ от каждого из них.

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