2016-12-29 8 views
1

Это моя Firebase структура базы данныхЗная, какой ребенок был изменен с внутренней `onDataChange` Firebase Android

"randomParentID" : { 
    "description" : "my description is here", 
    "meetings" : { 
    "randomidmeetings2" : true 
    }, 
    "members" : { 
    "WoZ3X4OZBuRepEuZZ0mUONa5h1a2" : true, 
    "fjshtY3lFdWott5Zd6lr9rJSy7z1" : true 
    }, 
    "title" : "my title" 
} 

Мне нужно знать, когда любое значение внутри randomParentID изменяется. Поэтому я разместил там addValueEventListener.

Но я также хочу добавить addChildEventListener в узел meetings и members, чтобы узнать более конкретные данные, которые были добавлены или удалены.

С этим, когда я хочу только onChildAdded (или удалить или изменить), который будет называться, я также получу onDataChange (от слушателя randomParentID).

Мой вопрос, есть ли способ узнать, какой из узла детей, которая была изменена внутри onDataChange, так что я могу пропустить его, когда данные, которые были изменены в meetings или members. событие вообще. Благодаря

+0

почему вы хотите знать, если какое-либо значение в 'randomParentID' изменяется? это потому, что «title» или «description» можно изменить? или потому, что вы просто хотите прослушать обновление 'members'? – Wilik

+0

Да, я хочу знать, когда изменяется название или описание. Но мне нужно 'addChildEventValueListener' для' members' и 'meeting', потому что у этих двоих есть собственный' RecyclerView', поэтому с этим я могу красиво оживить изменения. – koceeng

ответ

1

есть ли способ узнать, какой из узла детей, который был изменен внутри OnDataChange

Нет, нет. Любые небольшие изменения всегда будет вызывать onDataChange

Вместо этого вы можете прикрепить ValueEventListener на randomParentID/description и randomParentID/title и продолжать использовать ChildEventListener в randomParentID/meetings и randomParentID/members

Или переместите members и meetings внутри объекта снаружи элемента. База данных будет выглядеть следующим образом

{ 
    "items" : { 
     "randomParentID" : { 
      "description" : "my description is here", 
      "title" : "my title" 
     } 
    }, 
    "items_meetings" : { 
     "randomParentID" : { 
      "randomidmeetings2" : true 
     } 
    }, 
    "items_members" : { 
     "randomParentID" : { 
      "WoZ3X4OZBuRepEuZZ0mUONa5h1a2" : true, 
      "fjshtY3lFdWott5Zd6lr9rJSy7z1" : true 
     } 
    } 
} 

С этой структурой, вы можете продолжать использовать ValueEventListener в items/randomParentID

+0

О да, почему я не подумал о разделении базы данных. большое спасибо – koceeng

Смежные вопросы