を追加しました。FireBase onChildは、私は、ボタンのクリックオン「.push()」メソッドのキーを追加してい
私は親ノードに「子」を追加するたびに、それは常にその特定のノードにすべての子を取得します。 ここにデータベース構造があります。
"plans"親ノードの下に5つの子ノードがすでにあるとします。 は、私は1つの以上のノードを追加すると、すべての5も同様に表示され、その後、第六1があまりにも表示されます。合計11個のノードが表示されます。
私が研究し、「Onchildadded」メソッドは、このためだけ罰金が、そのがaddValueEventListenerと同じことをやっていきます見ました。ここで
は上addValueEventListener(私は活動のONSTARTに添付している、だから、いつでもユーザーはそれがrecyclerviewとcardviewにその時点ですべてのノードを表示するアプリを開きます。
初期メソッドの私のコードですq1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
{
cardViewPlaninfo card = dataSnapshot1.getValue(cardViewPlaninfo.class);
listplans .add(card);
String TAG = "cardTAG";
cardViewPlaninfo cvpi = new cardViewPlaninfo(card.getUserKEY(),card.getPlanpostedbyname().toString(),card.getCategory().toString(),card.getLocation().toString(),card.getDateandtime().toString(),card.getContribute().toString(),card.getExtranotes().toString());
cardViewPlaninfolistobj.add(cvpi);
adapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
super.onStart();
}
、これは私が「スワイプリフレッシュビュー」に書いているコードです。
void refreshItems()
{
Query q1 = databaseUsers.child("plans");
q1.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Log.i("OnChildAdded",dataSnapshot.getKey().toString());
cardViewPlaninfo card = dataSnapshot.getValue(cardViewPlaninfo.class);
listplans .add(card);
String TAG = "cardTAG";
cardViewPlaninfolistobj.add(card);
adapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
onItemsLoadComplete();
}
void onItemsLoadComplete()
{
srl.setRefreshing(false);
adapter.notifyDataSetChanged();
}
だから、最後のアイデアです、そのユーザは、活動「AfterLogin」ONSTART()メソッドが実行され、それを開いたとき親ノード「プラン」の下にあるすべての子ノードを表示します。他のユーザは、親ノード「プラン」の下にある子ノードであるノードを追加し、他のユーザはスワイプできなければならず、追加された唯一の子ノードが他のノード5と一緒に表示される。ノードが追加されました。
ヘルプ!あなたのコードから
refreshItems()メソッドは「スワイプリフレッシュレイアウト」のメソッドで、スワイプがあるとリフレッシュされることを示します。私がrefreshItemsメソッドを削除した場合、スワイプ・リフレッシュ・ポイントが表示されません。 –
アダプタのデータを最新のものに更新するためにスワイプしておいたと思いますが、今は必要ありません。スワイプをリフレッシュし続けたい場合は、アダプタデータをクリアする必要があります。 –
まだすべてのデータを2回読み込みます。 –