单击 BottomSheet RecyclerView 时为空 ArrayList

Empty ArrayList on clicking on BottomSheet RecyclerView

我有一个带有 HeatMap 的 MapsActivity。与 Google 地图一样,有一个选项可以按各种类别过滤数据(例如 Google 地图中的卫星、地形等)。

我有一个带有模态底部的按钮 sheet。此底部 sheet 包含带有类别列表的回收器视图。

当我点击一个类别和 运行 一种方法来制作新过滤数据的 ArrayList 时,大小结果为 0。

MapsActivity 中的方法class

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);
    }
}

RecyclerView 适配器中的 OnClick 方法class

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

While 循环在 changeHeatMap 方法中根本不执行,如果我放置一个断点并检查 il_cat_data 的大小,那么结果为 0。

我已经检查过启动应用程序时 il_cat_data 中是否添加了数据。 'list' 是一个包含完整数据的数组列表,用于设置第一个热图。

这里有什么问题吗?是否因为模态底部 sheet.

而无法访问数据

This 回答对我有帮助。

在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);