Использование базы данных Firebase Realtime для запуска события для всех пользователей для уведомления об обмене данными в Recyclerview - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть макет с 8 просмотрами переработчика и 8 просмотрами изображений с текстовыми представлениями, все из которых настроены на отображение с каждым просмотром переработчика, соответствующим конкретному c пользователю. 8 recyclerviews для 8 пользователей

Когда пользователь нажимает на пустой значок mi c, база данных firebase обновляется, и в этой комнате назначается место с данными пользователя, изображением изображения и видимость просмотра текста отключена, а видимость реселлера - видимой.

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

Есть ли способ уведомить всех пользователей о настройке макета, как только пользователь покидает комнату, если этот пользователь находился на месте.

У меня есть просмотр и просмотр изображений, а также просмотр текста в одном и том же месте для каждого отдельного места mi c.

Код для извлечения данных из базы данных и настройки видимости

 private void seat1(){

    Intent i = getIntent();
    final String RoomID = i.getStringExtra(ConstantApp.ACTION_KEY_ROOM_NAME);

    RFirebaseInstance = FirebaseDatabase.getInstance();
    // get reference to 'users' node
    RFirebaseDatabase = RFirebaseInstance.getReference("users" + "/" + RoomID + "/" + "seatlist" + "/");
    //Toast.makeText(this, "path " + RFirebaseDatabase, Toast.LENGTH_LONG).show();

    seat1 = new ArrayList<>();
    seatadaper1 = new SetSeatRecyclerAdapter1(this, seat1);
    seat1rec.setAdapter(seatadaper1);

    RDBListener = RFirebaseDatabase.addValueEventListener(new ValueEventListener() {
        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            if (snapshot.child("seatone").exists()){

                aud1.setVisibility(View.GONE);
                audtext1.setVisibility(View.GONE);
                seat1.clear();
                for (DataSnapshot teacherSnapshot : snapshot.getChildren()) {


                        try {
                            Users_Home upload = teacherSnapshot.getValue(Users_Home.class);
                            upload.setId(teacherSnapshot.getKey());
                            seat1.add(upload);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }


                }
                seatadaper1.notifyDataSetChanged();


                Toast.makeText(LiveRoomActivity.this, "seat1 " + seatadaper1.getItemCount(), Toast.LENGTH_SHORT).show();
            }else
            {
                aud1.setVisibility(View.VISIBLE);
                audtext1.setVisibility(View.VISIBLE);
            }



        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            log.debug("Error =======.=============.============= => " + databaseError);

        }
    });
    seatadaper1.setOnItemClickListener(new SetSeatRecyclerAdapter1.OnItemClickListener() {
        @Override
        public void onItemClick(int position) {

            //Toast.makeText(LiveRoomActivity.this, "clicked user => " + seat1.get(position).getName(), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onShowItemClick(int position) {
        }
        @Override
        public void onDeleteItemClick(int position) {
        }
    });

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