@@ -1028,7 +1028,7 @@ public void onClick(boolean active, GeoPackageTable table) {
10281028 }
10291029 };
10301030
1031- // Listener to forward a button click layer detail page to the appropriate dialog function
1031+ // (Delete) Listener to forward a button click layer detail page to the appropriate dialog function
10321032 DetailActionListener detailActionListener = new DetailActionListener (){
10331033 @ Override
10341034 public void onClick (View view , int actionType , String gpName , String layerName ) {
@@ -1193,13 +1193,24 @@ public void onDeleteLayer(String gpName, String layerName){
11931193 // layers live data is updated
11941194
11951195
1196+ // Get current geopackage database object in case removing layer deletes the last layer of the gp
1197+ GeoPackageDatabase currentDb = geoPackageViewModel .getGeoByName (gpName );
1198+ GeoPackageTable removableTable = currentDb .getTableByName (layerName );
11961199
11971200 // First remove it from the active layers
11981201 geoPackageViewModel .removeActiveLayer (gpName , layerName );
11991202 // Ask the repository to delete the layer
12001203 GeoPackageDatabase db = geoPackageViewModel .removeLayerFromGeo (gpName , layerName );
12011204 if (db != null ){
12021205 createGeoPackageDetailAdapter (db );
1206+ } else {
1207+ // If the layer that was deleted was the last one in the geopackage, the remove layer
1208+ // method will return null. In that case, use our original DB object with the deleted
1209+ // layer to populate the detail adapter view
1210+ if (currentDb != null && removableTable != null ) {
1211+ currentDb .remove (removableTable );
1212+ createGeoPackageDetailAdapter (currentDb );
1213+ }
12031214 }
12041215 }
12051216
0 commit comments