Получить данные из определенной позиции в firebase с помощью Android Studio

Привет, люди :) Я очень новичок в программировании и только что начал использовать RecyclerView в Android Studio.

Теперь я хотел бы получить данные из позиции x в firebase:

Так, например, моя база данных включает в себя:

Пользователи: Макс (с полями: ВУЗ, Возраст, Город) Лена (с полями: ВУЗ, Возраст, Город)

Я не знаю, сколько пользователей и как их зовут, и я хотел бы получить все данные одного пользователя в позиции x.

Есть ли кто-нибудь, у кого есть идея, как решить эту проблему? Заранее спасибо!

РЕДАКТИРОВАТЬ: теперь я сохранил UID от пользователя и передал его другому действию. Затем я пытаюсь получить принадлежащие данные из firebase, но я все еще не могу показать данные из поля «университет» в TextView.

public class nextActivity extends AppCompatActivity{

String UID;
private DocumentReference myReference;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.next_activity);

//get data from intent (I checked the value of UID - getIntent worked.)
UID = getIntent().getStringExtra("uid");

// I am not sure with the following line. Is it possible to just add "UID"?
myReference = FirebaseFirestore.getInstance().document("Users/"+UID);
myReference.addSnapshotListener(new EventListener<DocumentSnapshot>() {
    @Override
    public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
        if (documentSnapshot.exists()) {

            long universityID = documentSnapshot.getLong("university");
            cUniversityText.setText("University"+Long.toString(universityID));

        } else if (e != null) {
            Log.w("InspiringQuote", "Exception!", e);
        }
    }
});
cUniversityText = findViewById(R.id.cuniversitytext);

}


person dunkiero    schedule 09.09.2018    source источник
comment
То, как вы структурировали свою базу данных, не подходит. Для получения рекомендаций обратитесь к stackoverflow.com/questions/16421179/   -  person Raj    schedule 09.09.2018
comment
Что вы имеете в виду под at position x? Пожалуйста, ответьте @.   -  person Alex Mamo    schedule 10.09.2018
comment
@AlexMamo Что позиция зависит от ранее нажатого элемента. Например: Макс находится в позиции 0, Лена в позиции 1. В действии я хочу получить данные позиции 1, чтобы получить данные Лены.   -  person dunkiero    schedule 10.09.2018
comment
@dunkiero Используете ли вы библиотеку Firebase-UI?   -  person Alex Mamo    schedule 10.09.2018
comment
@AlexMamo Да. Приложение запускается, и я могу щелкнуть элемент в представлении ресайклера. Но затем в так запущенной деятельности я не могу понять, как получать фактические данные в реальном времени из firebase на основе щелкнутого элемента. Мне удалось передать данные из первого действия во второе, но не получить данные напрямую из firebase. Я надеюсь, что это поможет в качестве объяснения моей проблемы.   -  person dunkiero    schedule 10.09.2018
comment
Поскольку я использовал String cUniversityText = getItem(position).getUniversity(); внутри FirebaseRecyclerAdapter, чтобы получить RecyclerView, я подумал, что смогу сохранить позицию и передать ее следующему действию, чтобы иметь возможность снова получать данные непосредственно из firebase.   -  person dunkiero    schedule 10.09.2018
comment
@dunkiero Возможно, вам следует сохранить uid пользователя и передать его другому действию, чтобы получить данные конкретного пользователя.   -  person Alex Mamo    schedule 10.09.2018
comment
@AlexMamo Я последовал вашей рекомендации, но все еще не могу увидеть нужные данные. Я разместил свой код ниже. Может быть, вы в состоянии найти ошибку? Спасибо за вашу помощь!   -  person dunkiero    schedule 10.09.2018
comment
@dunkiero Что эта строка кода печатает Log.d("TAG", String.valueOf(universityID));, когда находится сразу после этой строки cUniversityText.setText("University"+Long.toString(universityID));?   -  person Alex Mamo    schedule 10.09.2018
comment
@AlexMamo Прямо сейчас он просто говорит: чтобы включить ведение журнала отладки, запустите: adb shell setprop log.tag.FA VERBOSE и I / FA: Диспетчер тегов не найден и, следовательно, не будет использоваться. Я постараюсь понять и решить эту проблему и свяжусь с вами после слов.   -  person dunkiero    schedule 10.09.2018
comment
@dunkiero Хорошо, держи меня в курсе.   -  person Alex Mamo    schedule 10.09.2018
comment
@AlexMamo Мне потребовалось до сих пор, чтобы понять проблему - кажется, что мой мобильный телефон не может - даже с секретными параметрами - разрешить регистрацию. Теперь вместо этого я использовал глобальную переменную и проверил ее послесловие с помощью TextView. Глобальной переменной не присвоено значение. Даже так: GV.setForTest(5); он остается со значением 0. Поэтому я полагаю, что DocumentSnapshot вообще не делается.   -  person dunkiero    schedule 11.09.2018
comment
@AlexMamo Привет! Я мог как-то решить проблему, хотя понятия не имел, где была ошибка. Спасибо за вашу помощь и время!   -  person dunkiero    schedule 11.09.2018
comment
@dunkiero Добро пожаловать, ура!   -  person Alex Mamo    schedule 11.09.2018


Ответы (1)


Я думаю, что это может помочь вам:

reference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        DataSnapshot users = dataSnapshot.child("users");
        int count=0;
        for (DataSnapshot usrchild : users.getChildren()){
           count++;
           if(count == 'Position x variable'){
              DataSnapshot university = usrchild.child("University");
              DataSnapshot age = usrchild.child("Age");
              DataSnapshot City = usrchild.child("City");
              if(!String.valueof(university.getValue()).matches("")){
              //Value is not null
              }
           }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Toast.makeText(getActivity(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
    }
});
person Pratham Khurana    schedule 09.09.2018
comment
Хорошо! Спасибо, я понял. Теперь мне нужно установить университет в виде текста. Как я могу избежать того, что он становится нулевым? - person dunkiero; 10.09.2018