Как обнаружить изменения на других устройствах в базе данных android studio firebase? - PullRequest
0 голосов
/ 30 апреля 2019

Я работаю над базой данных Firebase Realtime для моего приложения для чата на Android.У меня есть активность, которая создает новую группу для общения.Я успешно создал группу и внес ее информацию в базу данных.Затем, есть домашнее занятие с видом переработчика.Я хочу мгновенно обновить представление переработчика для всех пользователей, добавленных администратором.По моему мнению, это может быть достигнуто путем добавления ValueEventListener.Но я сталкиваюсь с некоторыми проблемами, такими как:

1) Мой вид рециркулятора находится на другой активности.

2) Всякий раз, когда я пытаюсь использовать ValueListener, он запускается только для администратора, который создаетгруппа, а не для других участников, которые могут быть в домашней активности в то время.

Это моя база данных Firebase:

enter image description here

Вот мой кусок кода для 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...