Полное извлечение данных строки из базы данных FirebaseRealtime путем проверки идентификатора продукта (дочернего идентификатора) с android идентификатором результата сканирования приложения - PullRequest
0 голосов
/ 18 февраля 2020

мое приложение со сканером штрих-кода, и я создал базу данных Firebase Realtime для этого приложения. я ввел некоторые данные в базу данных. я хочу получить все данные (имя, данные, цену) подряд, проверив результат сканирования по идентификатору (в указанной строке c) в базе данных. нашел некоторые учебные пособия, похожие на запрос, но я не мог установить код, как я буду sh. пожалуйста, кто-нибудь поможет мне сделать это небольшое исправление для меня?

ниже я упомянул мой нынешний рабочий код. но он проверяет результат сканирования с уникальным идентификатором строки и выбирается так, как я хочу. но трудно ввести данные с тем же UID, что и scanresult. Этот код работает, только когда я динамически добавляю данные непосредственно в базу данных на сайте.

Первый пи c рабочего кода:

enter image description here

секунгу пи c нужно получить, проверив его идентификатор:

enter image description here

@Override
public void handleResult(Result result) {
    final String scanResult = result.getText().toString();
    setContentView(R.layout.activity_second);


    databasefetch = FirebaseDatabase.getInstance().getReference().child("save").child(scanResult);
    databasefetch.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            TextView text = (TextView) findViewById(R.id.textView3);
            String name = dataSnapshot.child("name").getValue().toString();
            String details = dataSnapshot.child("details").getValue().toString();
            String price = dataSnapshot.child("price").getValue().toString();

            text.setText("\nProduct Name : "+name+"\nDetails : "+details+"\nPrice : "+price);

            //text to speech
            String  toSpeak=text.getText().toString();
            //Toast.makeText(getApplicationContext(),toSpeak,Toast.LENGTH_SHORT).show();
            txt.speak(toSpeak,TextToSpeech.QUEUE_FLUSH,null);


        }

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

        }
    });

1 Ответ

0 голосов
/ 18 февраля 2020

Чтобы получить данные из второго фрагмента JSON на основе его свойства id, необходимо выполнить запрос:

databasefetch = FirebaseDatabase.getInstance().getReference().child("save");
Query query = databasefetch.orderByChild("id").equalTo(8901058862836L);
query.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
      for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
        TextView text = (TextView) findViewById(R.id.textView3);
        String name = snapshot.child("name").getValue(String.class);
        String details = snapshot.child("details").getValue(String.class);
        String price = snapshot.child("price").getValue(String.class);

        ...
      }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        throw databaseError.toException(); // never ignore errors
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...