Есть код для добавления позиций в массив и вывода графика в GraphView:
for (i = 0; i < FragmentDiaryWeight.weightDiaryList.size(); i++) {
if (FragmentDiaryWeight.weightDiaryList.get(i).getmMonth() == 3) {
weightDiaryListSorted.add(new WeightDiaryClass(
FragmentDiaryWeight.weightDiaryList.get(i).getmDate(), FragmentDiaryWeight.weightDiaryList.get(i).getmWeight(),
FragmentDiaryWeight.weightDiaryList.get(i).getmImt(), FragmentDiaryWeight.weightDiaryList.get(i).getmDay(),
FragmentDiaryWeight.weightDiaryList.get(i).getmMonth()
));
}
}
dp = new DataPoint[i];
for (i = 0; i < weightDiaryListSorted.size(); i++) {
dp[i] = new DataPoint(weightDiaryListSorted.get(i).getmDay(), weightDiaryListSorted.get(i).getmWeight());
}
LineGraphSeries<DataPoint> series = new LineGraphSeries<>(dp);
На строке LineGraphSeries<DataPoint> series = new LineGraphSeries<>(dp);вылетает в null из-за:
java.lang.NullPointerException: Attempt to invoke interface method 'double com.jjoe64.graphview.series.DataPointInterface.getX()' on a null object reference
Не пойму почему, ведь dp содержит в себе позиции с x и y координатами.
Как починить?
Решено. Я использовал для определения размерности двух массивов одну и ту же переменную i. Добавление еще одной переменной iSorted решило проблему. Готовый код:
public void onClick(View v) {
for (iOlder = 0; iOlder < FragmentDiaryWeight.weightDiaryList.size(); iOlder++) {
if (FragmentDiaryWeight.weightDiaryList.get(iOlder).getmMonth() == 3) {
weightDiaryListSorted.add(new WeightDiaryClass(
FragmentDiaryWeight.weightDiaryList.get(iOlder).getmDate(),
FragmentDiaryWeight.weightDiaryList.get(iOlder).getmWeight(),
FragmentDiaryWeight.weightDiaryList.get(iOlder).getmImt(),
FragmentDiaryWeight.weightDiaryList.get(iOlder).getmDay(),
FragmentDiaryWeight.weightDiaryList.get(iOlder).getmMonth()
));
}
}
iSorted = weightDiaryListSorted.size();
dp = new DataPoint[iSorted];
for (iSorted = 0; iSorted < weightDiaryListSorted.size(); iSorted++) {
dp[iSorted] = new DataPoint(weightDiaryListSorted.get(iSorted).getmDay(), weightDiaryListSorted.get(iSorted).getmWeight());
}
LineGraphSeries<DataPoint> series = new LineGraphSeries<>(dp);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости