Как получить данные о конкретных пользователях из firebase в виде списка - PullRequest
0 голосов
/ 26 июня 2018

Это мой код того, как текущие / определенные зарегистрированные пользователи могут добавлять в базу данных, мне нужна помощь в извлечении информации об этом конкретном пользователе в виде списка или recyclerView. Я не хочу, чтобы другой пользователь получал данные другого пользователя.

Это также структура моей базы данных: в деталях оплаты счетов за воду для пользователей первый сгенерированный узел - это идентификатор пользователя, а также следующий узел после идентификатора пользователя - это идентификатор транзакции.

Структура базы данных: Structure of my database

mAuth = FirebaseAuth.getInstance();
currentID = mAuth.getCurrentUser().getUid();
databaseWater= FirebaseDatabase.getInstance().getReference().child("users water bill payment details").child(currentID);

progressBar= new ProgressDialog(this);
moneynumberwat = (EditText) findViewById(R.id.moneynumberwat);
moneypinwat = (EditText) findViewById(R.id.moneypinwat);
meterwat = (EditText) findViewById( R.id.meterwat);
user_idwat = (EditText) findViewById(R.id.user_idwat);
amountwat = (EditText) findViewById(R.id.amountwat);
modePaywat = (Spinner) findViewById(R.id.modePaywat);
Paywater = (Button) findViewById(R.id.Paywater);

Paywater.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        addPayWaterInfo();
    }
});

setubk();
setupbk();
}


private void setubk() {
    ImageButton btn2 = findViewById(R.id.bord);
    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
            Intent intent = new Intent(PayOffWater.this, Interface.class);
            startActivity(intent);
        }
    });
}

private void setupbk() {
    ImageButton btn2 = findViewById(R.id.bak);
    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
            Intent intent = new Intent(PayOffWater.this, Services.class);
            startActivity(intent);
        }
    });
}

private void addPayWaterInfo() {
    String moneynumw = moneynumberwat.getText().toString();
    String pincodelitw = moneypinwat.getText().toString();
    String meterw = meterwat.getText().toString();
    String customerw = user_idwat.getText().toString();
    String cashw = amountwat.getText().toString();
    String mpayw = modePaywat.getSelectedItem().toString();

        if( moneynumw.isEmpty()||moneynumw.length()>10 || moneynumw.length()<10 ||
                pincodelitw.length()>4 || pincodelitw.length()<4 ||meterw.isEmpty()||cashw.isEmpty()|| mpayw.isEmpty()){
            Toast.makeText(this,"provide correct information before payment can be successful",Toast.LENGTH_LONG).show();

        } else{
            String id = databaseWater.push().getKey();
            com.example.iamstix_jnr.utility.PayOf.Pay pay = new Pay(moneynumw,pincodelitw,meterw,customerw,cashw,mpayw);
            databaseWater.child(id).setValue(pay);

            finish();
            Intent intent = new Intent(PayOffWater.this,Success.class);
            startActivity(intent);
        }
    }

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы должны добавить ChildEventListener в ссылку на вашу базу данных, а при каждом обратном вызове добавлять, удалять или обновлять адаптер, который есть в вашем обзоре

databaseWater.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            //todo add to adapter
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            //todo update adapter
        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
            //todo remove from adapter
        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            //todo update adapter

        }

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

        }
    });
0 голосов
/ 26 июня 2018

Вы должны перейти к последнему идентификатору.

    databaseWater= FirebaseDatabase.getInstance().getReference().child("users water bill payment details").child(currentID).child("id of no 3.");

enter image description here

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