Java 单击底部工作表回收视图时清空ArrayList
我有一个地图活动,上面有热图。与谷歌地图一样,谷歌地图也提供了按不同类别(如谷歌地图中的卫星、地形等)过滤数据的选项 我有一个按钮,带来了一个模式的底部表。此底部图纸包含一个包含类别列表的回收器视图 当我点击一个类别并运行一个方法来创建一个新过滤数据的ArrayList时,大小变成了0 MapsActivity类中的方法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==
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);