Пустой ArrayList при нажатии на BottomSheet RecyclerView - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть MapsActivity с HeatMap. Как и в случае с Картами Google, существует возможность фильтрации данных по различным категориям (например, Спутник, Ландшафт и т. Д. В случае Карт Google).

У меня есть кнопка, которая приносит модальный нижний лист. Этот нижний лист содержит представление переработчика со списком категорий.

Когда я нажимаю на категорию и запускаю метод для создания ArrayList новых отфильтрованных данных, размер оказывается равным 0.

Метод в классе MapsActivity

public void changeHeatMap(int category, int remove){
    int count = 0;
    if (remove==0) {
        ArrayList<LatLng> catHeatMap = new ArrayList<>(3);
        while (count < il_cat_data.size()) {
            if (il_cat_data.get(count) == category) {
                catHeatMap.add(list.get(count));
            }
            count++;
        }
        mProvider.setData(catHeatMap);
    }else{
        mProvider.setData(list);
    }
}

Метод OnClick в классе RecyclerView Adapter

public void onClick(View view) {
        int position = getAdapterPosition();
        MapsActivity mapsActivity = new MapsActivity();
        if (position==MapsActivity.isClicked){
            MapsActivity.isClicked = -1;
            mapsActivity.changeHeatMap(position,1);
        }else{
            MapsActivity.isClicked = position;
            mapsActivity.changeHeatMap(position,0);
        }
    }

Выдает эту ошибку

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.maps.android.heatmaps.HeatmapTileProvider.setData(java.util.Collection)' on a null object reference

Хотя цикл не выполняется вообще в методе changeHeatMap, и если я ставлю точку останова и проверяю размер il_cat_data, то получается, что он равен 0.

Я проверил, что данные добавляются в il_cat_data при запуске приложения. «Список» - это массив, который содержит полные данные и используется для настройки первой тепловой карты.

Что здесь может быть не так? Данные недоступны из-за модального нижнего листа.

1 Ответ

0 голосов
/ 26 апреля 2018

Этот ответ помог мне.

В MapsActivity создана переменная

static MapsActivity mapsActivity;

В состоянии onCreate:

MapsActivity = this;

Добавлен этот метод

public static MapsActivity getInstance(){
    return   mapsActivity;
}

В Recycler Adapter onClick изменен метод

MapsActivity mapsActivity = new MapsActivity();
mapsActivity.changeHeatMap(position,1);

до

MapsActivity.getInstance().changeHeatMap(position,1);
...