Я новичок в разработке android, и у меня возникла проблема с преобразованием плавающих данных из Firebase Firestore на сегодняшний день. Я хочу, чтобы эти данные отображались на графике с использованием библиотеки MPAndroidChart . Пользовательский класс имеет две переменные: weight и date . Я хочу, чтобы пользователь записал свой собственный текущий вес в редактируемый текст и после нажатия кнопки сохранил вес и текущую дату в базе данных Firebase Firestore . Затем я хочу, чтобы сохраненные данные отображались в LineChart.
Как вы можете видеть на скриншоте моей базы данных Firebase Firestore есть переменная даты в flaot. Основная проблема в том, что я понятия не имею, как я могу преобразовать эту переменную с плавающей точкой в SimpleDataFormat (дд / мм)
Это Фрагмент
public class ReportFragment extends Fragment {
private ArrayList<Entry> weightDateList;
private LineChart mWeightChart;
private Button btnWeight;
private EditText inputWeight;
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private static final String TAG = "ReportFragment";
private Date today = new Date(System.currentTimeMillis());
private final SimpleDateFormat mFormat = new SimpleDateFormat("dd/MM");
public ReportFragment() {}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_report, container, false);
mWeightChart = view.findViewById(R.id.weight_chart);
btnWeight = view.findViewById(R.id.add_weight);
inputWeight = view.findViewById(R.id.input_weight);
XAxis xWeightAxis = mWeightChart.getXAxis();
xWeightAxis.setValueFormatter(new ValueFormatter() {
@Override
public String getFormattedValue(float dateWeight) {
return mFormat.format(dateWeight);
}
});
db.collection("WeightChartData").addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
if(e != null) {
Log.d(TAG, "onWeightEvent: " + e.getMessage());
return;
}
weightDateList = new ArrayList<Entry>();
for(QueryDocumentSnapshot weightDoc : queryDocumentSnapshots) {
if(weightDoc.exists()) {
WeightDateData weightData = weightDoc.toObject(WeightDateData.class);
weightDateList.add(new Entry(weightData.getWeight(), weightData.getDateWeight()));
}
}
}
});
LineDataSet weightDataSet = new LineDataSet(weightDateList, "WeightGraph");
LineData weightData = new LineData(weightDataSet);
mWeightChart.setData(weightData);
btnWeight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
saveWeight();
}
});
return view;
}
public void saveWeight() {
float weight = Float.valueOf(inputWeight.getText().toString());
float dateWeight = Float.valueOf(today.getTime());
WeightDateData weightData = new WeightDateData(weight, dateWeight);
db.collection("WeightChartData").document().set(weightData).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(getActivity(), "Input weight was success", Toast.LENGTH_SHORT).show();
}
});
}
}
Надеюсь, этот пример поможет в решении этой проблемы. Спасибо всем!