У меня есть 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 при запуске приложения. «Список» - это массив, который содержит полные данные и используется для настройки первой тепловой карты.
Что здесь может быть не так? Данные недоступны из-за модального нижнего листа.