package edu.purdue.app.map; import java.util.ArrayList; import java.util.List; import com.google.android.gms.maps.model.LatLng; import edu.purdue.app.R; import edu.purdue.app.map.MapData.Building; import android.app.DialogFragment; import android.app.Fragment; import android.graphics.Point; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import android.widget.LinearLayout.LayoutParams; import android.widget.RelativeLayout; public class BuildingListDialog extends DialogFragment implements OnItemClickListener { OnBuildingSelectedListener listener; String catSelected; ListView catList, subList; /** State of the list */ public static String CATEGORY_LIST = "CATEGORIES"; public String currentCategory = CATEGORY_LIST; /** Interface for intercepting list selections in fragments */ public interface OnBuildingSelectedListener { void onBuildingSelected(Building b); } public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().setTitle("Categories"); View v = inflater.inflate(R.layout.map_fragment_buildinglist, container, false); catList = (ListView) v.findViewById(R.id.map_buildinglist_listview); catList.setAdapter( new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, MapActivity.mpd.getBuildingCategories() ) ); catList.setOnItemClickListener(this); currentCategory = CATEGORY_LIST; return v; } /** Called when the user selects an item on either list view */ public void onItemClick(AdapterView<?> list, View v, int pos, long id) { List<String> inflate = null; if (currentCategory.equals(CATEGORY_LIST)) { currentCategory = MapActivity.mpd.getBuildingCategories().get(pos); getDialog().setTitle(currentCategory); inflate = new ArrayList<String>(); for (Building b : MapActivity.mpd.getBuildings(currentCategory)) { inflate.add(b.full_name); } catList.setAdapter(new ArrayAdapter<String>( getActivity(), android.R.layout.simple_list_item_1, inflate)); } else { listener.onBuildingSelected(MapActivity.mpd.getBuildings(currentCategory).get(pos)); getDialog().dismiss(); } } public void setOnBuildingSelectedListener(OnBuildingSelectedListener b) { this.listener = b; } }