последняя база данных Firebase
, поэтому мне нужно задать 2 вопроса
A . я хочу удалить потомка RT - 002 (скажем, 3:"vasundhara"), и их ключи должны измениться как
- silver city multiplex
- Вайшали Метро
- Станция Низамудин
, и я хочу сделать это с другими, когда пользователь удаляет специфику c дочерний элемент любого другого маршрута
, а также хочет вставить после и перед любым конкретным ребенком (как мы делаем в связанных списках)
пример, который я хочу добавить "rd c" до vaishali metro
- серебряный городской мультиплекс
- rd c
- метро Вайшали
- станция Низамудин
пример, который я хочу добавить "rd c" после метро Вайшали
- серебряный городской мультиплекс
- метро Вайшали
- 1 c
- станция Низамудин
B. Я хочу выбрать маршруты, где одно из значений равно «Серебряный городской мультиплекс» и второе значение "низ amudin station "
Выход будет: RT - 002 RT - 007
Код ниже B , который я пробовал когда моя база данных была похожа на nizamudin station: = "true" и была такой для каждого маршрута
, и мне пришлось дважды нажать кнопку, чтобы загрузить данные.
старое изображение базы данных
Я пытался удалить ребенка ( часть A упомянута), но безуспешно, и результатом был ребенок "RT - 002 "Ведро удалено вместо одного ребенка
public void Search_Routes(View view){
String startstop=spinstart.getSelectedItem().toString();//this data comes from spinner
String endstop=spinend.getSelectedItem().toString();//this data comes from spinner
RouteListAdapter.clear();//in oncreate i have already set the adapter for spinners and listviews(the output is displayed in listview)
myref=FirebaseDatabase.getInstance().getReference("routes");
RouteList.clear();
if (startstop.equals(endstop))
{
Toast.makeText(this, "Please Select Different Stops !!!", Toast.LENGTH_SHORT).show();
}
else if (startstop.equals(placeholderSource)||endstop.equals(placeholderDest))
{
Toast.makeText(this, "Please Select a Stop !!!", Toast.LENGTH_SHORT).show();
}
else
{
switch (counter){
case 0:
Toast.makeText(RouteViewActivity.this, "Click SEARCH ROUTES button again", Toast.LENGTH_SHORT).show();
counter=1;
break;
case 1:counter=0; break;
}
ArrayList<String> stoparr=new ArrayList<>();
stoparr.add(startstop);
stoparr.add(endstop);
Collections.sort(stoparr);
myref.orderByChild(stoparr.get(0)).equalTo("true").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot item:dataSnapshot.getChildren()) {q1.add(item.getKey());}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
myref.orderByChild(stoparr.get(1)).equalTo("true").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot item:dataSnapshot.getChildren()) {q2.add(item.getKey());}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
if(q1.size()>q2.size()){ssize=q2.size();}
if(q1.size()<q2.size()){ssize=q1.size();}
if(q1.size()==q2.size()){ssize=q2.size();}
for (int i=0;i<ssize;i++)
{
if (q2.contains(q1.get(i))){RouteList.add(q1.get(i));}
}
RouteListAdapter.notifyDataSetChanged();
q1.clear();
q2.clear();
}
}