Я использую googleMap и пытаюсь обновить маркеры из базы данных firebase, а это значит, что я удаляю все предыдущие маркеры и добавляю новые с помощью этого метода
@Override
public void onKeyEntered(String key, GeoLocation location) {
try{
MyItem myItem = new MyItem(location.latitude, location.longitude);
if (!items.contains(myItem)) {
items.add(myItem);
}
Log.d("onKey","called");
}catch (ClassCastException e){
Log.d("classCastException","");
}
}
parseJsonToListметод:
private void parseJsonToList() {
itemss = clusterManagerAlgorithm.getItems();
try {
items.removeAll(itemss);
}catch (IndexOutOfBoundsException e){
Log.d("itemsDoesn't exist"," : ");
}
mClusterManager.clearItems();
mClusterManager.cluster();
mClusterManager.addItems(items);
Log.d("items"," : " + items);
}
Итак, моя проблема в том, что каждый раз, когда я пытаюсь почистить и загрузить данные, происходит то, что все маркеры исчезают примерно на 3 секунды для повторной загрузки.Как я могу удалить и перезагрузить данные без маркеров исчезают.
это класс myItem:
public class MyItem implements ClusterItem {
private final LatLng mPosition;
public MyItem(double lat, double lng) {
mPosition = new LatLng(lat, lng);
}
@Override
public LatLng getPosition() {
return mPosition;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyItem item = (MyItem) o;
return Objects.equals(mPosition, item.mPosition);
}
@Override
public int hashCode() {
return Objects.hash(mPosition);
}
}