package edu.purdue.app.map; import java.util.ArrayList; import java.util.List; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; public class LayerListDialog extends DialogFragment { /** Listener that is called when the dialog box is confirmed */ MapLayersUpdateListener listener; Context c; /** MapData which is used to populate the list of layers */ MapData mpd; /** onLayersUpdate is called when the user updates their selection of layers */ public interface MapLayersUpdateListener { void onLayersUpdate(List<String> enabled); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Create the mapdata object mpd = new MapData(c); // Build the alert dialog AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); final List<String> enabledLayers = new ArrayList<String>(); // Convert string list to string array String[] layersList = new String[mpd.getLayersList().size()]; for (int i = 0; i < mpd.getLayersList().size(); i++) { layersList[i] = mpd.getLayersList().get(i); } builder.setTitle("Layers"); builder.setMultiChoiceItems(layersList, null, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { if (isChecked) { enabledLayers.add(mpd.getLayersList().get(which)); } else { enabledLayers.remove(mpd.getLayersList().get(which)); } } }); builder.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { listener.onLayersUpdate(enabledLayers); } }); return builder.create(); } public void setOnUpdateListener(MapLayersUpdateListener listener, Context c) { this.listener = listener; this.c = c; } }