GraphView выпадает в null

223
05 февраля 2019, 23:40

Есть код для добавления позиций в массив и вывода графика в 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 координатами.

Как починить?

Answer 1

Решено. Я использовал для определения размерности двух массивов одну и ту же переменную 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);
READ ALSO
чередование действий по клику мыши

чередование действий по клику мыши

Я пишу крестики нолики, и хочу сделать пока по простому - игру с другом, где ты кликаешь мышкой по клетке и у тебя появляется крестик, потом...

258
Ввод/вывод данных с клавиатуры с помощью case

Ввод/вывод данных с клавиатуры с помощью case

Дорогие программистыПо задумке моей программы пользователь вводит несколько строк, а потом программа их выводит на экран

254
Разница дат MomentJs

Разница дат MomentJs

Нигде не смог найти как при вычитании из одной даты другой получить сколько прошло полных лет, полных месяцев и полных днейПо отдельности...

217
Плагин Sublime Text 3

Плагин Sublime Text 3

Всем привет! Есть ли плагин для sublime 3, что бы по выбранному курсором массиву или переменной в которой хранится число, он автоматически выстраивал...

253