Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击底部工作表回收视图时清空ArrayList_Java_Android_Android Recyclerview_Google Maps Android Api 2_Bottom Sheet - Fatal编程技术网

Java 单击底部工作表回收视图时清空ArrayList

Java 单击底部工作表回收视图时清空ArrayList,java,android,android-recyclerview,google-maps-android-api-2,bottom-sheet,Java,Android,Android Recyclerview,Google Maps Android Api 2,Bottom Sheet,我有一个地图活动,上面有热图。与谷歌地图一样,谷歌地图也提供了按不同类别(如谷歌地图中的卫星、地形等)过滤数据的选项 我有一个按钮,带来了一个模式的底部表。此底部图纸包含一个包含类别列表的回收器视图 当我点击一个类别并运行一个方法来创建一个新过滤数据的ArrayList时,大小变成了0 MapsActivity类中的方法 public void changeHeatMap(int category, int remove){ int count = 0; if (remove==

我有一个地图活动,上面有热图。与谷歌地图一样,谷歌地图也提供了按不同类别(如谷歌地图中的卫星、地形等)过滤数据的选项

我有一个按钮,带来了一个模式的底部表。此底部图纸包含一个包含类别列表的回收器视图

当我点击一个类别并运行一个方法来创建一个新过滤数据的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);
    }
}
它抛出了这个错误

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_数据的大小,那个么结果是0

我已经检查了应用程序启动时,数据是否添加到il_cat_数据中。“列表”是一个包含完整数据的arraylist,用于设置第一个热图

这里有什么问题?由于模式底部工作表的原因,无法访问数据。

答案帮助了我

在MapsActivity中创建了一个变量

static MapsActivity mapsActivity;
在onCreate状态下:

MapsActivity = this;
增加了这个方法

public static MapsActivity getInstance(){
    return   mapsActivity;
}
在回收器适配器中,onClick方法已更改

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


java.lang.NullPointerException
。罪魁祸首是
MapsActivity MapsActivity=new MapsActivity()。您从不使用
new
关键字创建活动对象。阅读有关。可能的副本
MapsActivity mapsActivity = new MapsActivity();
mapsActivity.changeHeatMap(position,1);
MapsActivity.getInstance().changeHeatMap(position,1);