Я работаю над базой данных Firebase Realtime для моего приложения для чата на Android.У меня есть активность, которая создает новую группу для общения.Я успешно создал группу и внес ее информацию в базу данных.Затем, есть домашнее занятие с видом переработчика.Я хочу мгновенно обновить представление переработчика для всех пользователей, добавленных администратором.По моему мнению, это может быть достигнуто путем добавления ValueEventListener
.Но я сталкиваюсь с некоторыми проблемами, такими как:
1) Мой вид рециркулятора находится на другой активности.
2) Всякий раз, когда я пытаюсь использовать ValueListener, он запускается только для администратора, который создаетгруппа, а не для других участников, которые могут быть в домашней активности в то время.
Это моя база данных Firebase:
Вот мой кусок кода для AddNewGroup
активности, который не содержит никакого представления переработчика:
public void makeGroupBtn(View view)
{
displayDialogBox("Creating group");
TextInputLayout inputLayout = findViewById(R.id.textInputLayout4);
final String gname = inputLayout.getEditText().getText().toString();
if(TextUtils.isEmpty(gname))
{
inputLayout.setError("Group name is required");
hideDialogBox();
return;
}
int marked = 0;
for (Contact c : availableContacts)
{
if(c.isChecked())
marked++;
}
if(marked == 0)
{
Toast.makeText(this, "No contact selected", Toast.LENGTH_SHORT).show();
hideDialogBox();
return;
}
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users").child(FirebaseAuth.getInstance().getCurrentUser().getPhoneNumber()).child("groups");
final String key = reference.push().getKey();
reference = reference.child(key);
/*
Adding in the node of admin who created the group
*/
HashMap<String,String> hashMap = new HashMap<>();
hashMap.put("adminPhone", FirebaseAuth.getInstance().getCurrentUser().getPhoneNumber());
hashMap.put("groupName",gname);
final long time = new Date().getTime();
hashMap.put("timeCreated", String.valueOf(time));
reference.setValue(hashMap);
/*
Adding in the nodes of other members which admin selected
*/
for (Contact c : availableContacts)
{
if(c.isChecked())
{
reference = FirebaseDatabase.getInstance().getReference().child("users").child(c.getPhone()).child("groups");
reference = reference.child(key);
reference.setValue(hashMap);
}
}
Intent i = new Intent(this,ChatThread.class);
i.putExtra("groupName",gname);
i.putExtra("groupKey",key);
startActivity(i);
finish();
}