Я выборка некоторых данных из FirebaseDatabase
, а затем положить их в array
, а затем пытаюсь показать их в List
, который в обычае AlertDialog
.данных извлекаются из FirebaseDatabase становятся показано в 3 отдельных AlertDialogs вместо одного
Вот код:
query = mDatabase.child("child").child(anotherChild).child("yetAnotherChild");
uProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
query.orderByChild("someChild").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot != null) {
Map<String, String> newD = (Map<String, String>) dataSnapshot.getValue();
ArrayList<String> l = new ArrayList<String>();
l.add(newD.get("lol").substring(30));
String names[] = l.toArray(new String[0]);
AlertDialog.Builder alertDialog = new AlertDialog.Builder(Activity.this);
LayoutInflater inflater = getLayoutInflater();
View convertView = inflater.inflate(R.layout.dialog_list, null);
alertDialog.setView(convertView);
alertDialog.setTitle("title");
ListView lv = (ListView) convertView.findViewById(R.id.lv);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_list_item_1, names);
lv.setAdapter(adapter);
alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
alertDialog.show();
} else {
Toast.makeText(getBaseContext(), "NULLLLL", Toast.LENGTH_SHORT).show();
}
}
...
...
});
}
});
Вот структура базы данных:
app
-child
-anotherChild
-yetAnotherChild
-inaccessibleChild
-someChild: "value"
-lol: "value"
Я не могу использовать valueEventListener()
здесь, как у меня нет доступа к inaccessibleChild
. inaccessibleChild
вот uid
других пользователей, которые следовали за определенным пользователем. Как я могу получить там uid
?
Проблема в том, что данные получают за уши, но вместо того, чтобы показаны в списке в одном AlertDialog
, он становится показан один за одним в отдельной AlertDialog
.
Что здесь общего не работает?
Пожалуйста, дайте мне знать.
Сколько детей находится под 'child/anotherChild/yetAnotherChild'? вы прикрепляете 'ChildEventListener', и похоже, что у него есть 3 дочерних элемента под этим узлом, поэтому поэтому' onChildAdded' запускается 3 раза (и 'alertDialog.show();' называется 3 раза – Wilik
@Wilik yeah ... это то, что происходит. Как разрешить 'alertDialog.show();' получать только один раз, показывая все 3 значения? –
Ответ Reaz Murshed является лучшим примером, используя 'ValueEventListener' – Wilik