Я предполагаю, что у меня есть пердеж мозга с FB DB при создании отслеживания поступления топлива для пользователей приложений.У меня есть текущая структура базы данных ..
![enter image description here](https://i.stack.imgur.com/8Nehj.png)
Иерархия: "уплотнения / идентификатор пользователя / населенного пункта / топливо".Цель состоит в том, чтобы вернуть всех детей под ключом «топливо» любого данного населенного пункта для этого пользователя.В будущем появятся другие записи, не связанные с топливом, но с тем же идентификатором урегулирования.
Вот мой valueEventListener для извлечения данных ..
public class FragmentFuel extends Fragment {
private ArrayList<Fuel> fuel = new ArrayList<>();
private Context context;
private MI MI;
private RecyclerView.Adapter recyclerAdapter = new recyclerAdapter();
private ValueEventListener valueEventListener;
private DatabaseReference reference;
//private DecimalFormat usdFormat = new DecimalFormat("#.00");
public FragmentFuel() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Logger.i(dataSnapshot.getRef().toString());
Logger.i("COUNT " + dataSnapshot.getChildrenCount());
fuel.clear();
for (DataSnapshot child : dataSnapshot.getChildren()) {
fuel.add(child.getValue(Fuel.class));
}
recyclerAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_fuel, container, false);
RecyclerView recyclerView = v.findViewById(R.id.recycler);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(recyclerAdapter);
return v;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
MI = (MI) getActivity();
}
@Override
public void onStart() {
super.onStart();
if (MI != null) {
reference = MI.getReference().child("settlements").child(MI.getUID()).child(MI.getSID()).child("fuel");
reference.addValueEventListener(valueEventListener);
}
}
@Override
public void onStop() {
super.onStop();
reference.removeEventListener(valueEventListener);
}
@Override
public void onDetach() {
super.onDetach();
MI = null;
}
private class recyclerAdapter extends RecyclerView.Adapter<recyclerAdapter.viewHolder> {
@Override
public viewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new viewHolder(getLayoutInflater().inflate(R.layout.fuel_row, parent, false));
}
@Override
public void onBindViewHolder(viewHolder holder, int position) {
Fuel row = fuel.get(position);
holder.date.setText(TimeConvert.toDateAndTime(row.getStamp()));
holder.cost.setText("$" + formatInt(row.getCost()));
holder.odometer.setText("odometer: " + formatInt(row.getOdometer()));
holder.gallons.setText(formatInt(row.getGallons()) + " gallons");
if (row.getNote().equals("")) holder.note.setVisibility(View.GONE);
else holder.note.setVisibility(View.VISIBLE);
holder.note.setText(row.getNote());
}
@Override
public int getItemCount() {
return fuel.size();
}
class viewHolder extends RecyclerView.ViewHolder {
TextView date, cost, odometer, gallons, note;
viewHolder(View itemView) {
super(itemView);
date = itemView.findViewById(R.id.date);
cost = itemView.findViewById(R.id.cost);
odometer = itemView.findViewById(R.id.odometer);
gallons = itemView.findViewById(R.id.gallons);
note = itemView.findViewById(R.id.note);
}
}
}
private String formatInt(int count) {
return NumberFormat.getNumberInstance(Locale.US).format(count);
}
}
Мой вывод журнала показывает, что OnDataChanged вызываетсяправильно, но getChildCount () возвращает значение 0. Ссылочный путь верен и должен возвращать 4 детей.
![enter image description here](https://i.stack.imgur.com/rgouC.png)
Надеюсь, кто-нибудь увидит, что я 'мы пропустили.