单击 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);
我有一个带有 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);