firebaseの、onChildAdded()で取得した値を、ListViewに、
dataSnapshot.getKey() を一行
dataSnapshot.getValue() を一行 といった配置で、繰り返して表示させています。
しかし、firebaseの内容に変更があった場合に、onChildAdded()は呼ばれず、onChildChanged()が呼ばれると思うのですが、onChildChanged()では、変更された点のみしか取得できず、
ArrayList<String> data を再度生成しようにもできません。
そこで、取得した、変更点のkeyを、すでに古いデータで、生成、データの追加が行われている、ArrayList<String> data をfor文で回して、onChildChanged()によって取得された、dataSnapshot.getKeyと比較して同じ項目があれば、そこの下の行の valueが入力されている欄に、 新しく取得した dataSnapShot.getValue()を代入したいです。
そこで、質問なのですが、どうすれば、dataの要素を指定して、上書きできるのでしょうか?
final ArrayList<String> data = new ArrayList<>(); @Override public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) { Log.d(TAG, "onChildChanged :" + dataSnapshot.getKey()); int i; for(i=0; i<=data.size(); i++){ if(data.get(i).equals(dataSnapshot.getKey().toString())) { //取得した順番のdataが、dataSnapshotのkeyと同じ場合、それの次の配列のところに、getValueの値を上書きする } }
あなたの回答
tips
プレビュー