layout_width="fill_parent"android:
layout_height="wrap_content"android:
id="@+id/btnDirectoryActivity"android:
text="@string/directory_activity"/>
Directory.java
packagecom.wpirl.activity;
importjava.util.Arrays;
importandroid.app.ExpandableListActivity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.ContextMenu;
importandroid.view.Gravity;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.view.ContextMenu.ContextMenuInfo;
importandroid.widget.AbsListView;
importandroid.widget.BaseExpandableListAdapter;
importandroid.widget.ExpandableListAdapter;
importandroid.widget.ExpandableListView;
importandroid.widget.TextView;
importandroid.widget.Toast;
importandroid.widget.ExpandableListView.ExpandableListContextMenuInfo;
importcom.wpirl.map.GraphNode;
importcom.wpirl.map.Map;
publicclassDirectoryActivityextendsExpandableListActivity
{
privatestaticfinalintMENU_VIEW_DETAIL=Menu.FIRST+1;
privatestaticfinalintMENU_FROM_HERE=Menu.FIRST+2;
privatestaticfinalintMENU_TO_HERE=Menu.FIRST+3;
//Sampledataset.children[i]containsthechildren(String[])forgroups[i].privatefinalString[]groups={"Room","Name"};
privateString[][]children=newString[2][];
ExpandableListAdapteradapter;
@OverridepublicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
//Setupouradapter
adapter=newDirectoryExpandableListAdapter();
children[0]=Map.getRooms();
Arrays.sort(children[0]);
children[1]=Map.getPeople();
Arrays.sort(children[1]);
setListAdapter(adapter);
registerForContextMenu(getExpandableListView());
}
@OverridepublicvoidonCreateContextMenu(ContextMenumenu,Viewv,ContextMenuInfomenuInfo){menu.setHeaderTitle("Menu");
menu.add(0,MENU_VIEW_DETAIL,0,"ViewDetail");
menu.add(0,MENU_FROM_HERE,0,"FromHere");
menu.add(0,MENU_TO_HERE,0,"ToHere");
}
@OverridepublicbooleanonContextItemSelected(MenuItemitem){ExpandableListContextMenuInfoinfo=(ExpandableListContextMenuInfo)item.getMenuInfo();
Stringtitle=((TextView)info.targetView).getText().toString();inttype=ExpandableListView.getPackedPositionType(info.packedPosition);
intid=item.getItemId();
/**Ifthemenuclickedisthechild*/
if(type==ExpandableListView.PACKED_POSITION_TYPE_CHILD)
{
GraphNodenode=Map.searchDetail(title);
switch(id)
{
caseMENU_VIEW_DETAIL:
StringBuildersb=newStringBuilder();
sb.append("Detailinformation\n");
sb.append("RoomID:
"+node.room+"\n");
sb.append("Name:
"+node.person+"\n");
Toast.makeText(this,sb.toString(),Toast.LENGTH_LONG).show();
break;
caseMENU_FROM_HERE:
Map.setRoutingSource(node);
startActivity(newIntent(this,RouteActivity.class));
break;
caseMENU_TO_HERE:
Map.setRoutingDestination(node);
startActivity(newIntent(this,RouteActivity.class));
break;
}
returntrue;
/**Ifthemenuclickedisthegroup*/
}
elseif(type==ExpandableListView.PACKED_POSITION_TYPE_GROUP)
{
intgroupPos=ExpandableListView.getPackedPositionGroup(info.packedPosition);
if(groupPos==0){Toast.makeText(this,"Thisgroupcontainsthelistofroomsinthisbuilding",Toast.LENGTH_SHORT).show();
}
else{Toast.makeText(this,"Thisgroupcontainsthelistofnamesinthisbuilding",
Toast.LENGTH_SHORT).show();
}
returntrue;
}
returnfalse;
}
/****/
publicclassDirectoryExpandableListAdapterextendsBaseExpandableListAdapter{publicObjectgetChild(intgroupPosition,intchildPosition){returnchildren[groupPosition][childPosition];
}
publiclonggetChildId(intgroupPosition,intchildPosition)
{
returnchildPosition;
}
publicintgetChildrenCount(intgroupPosition)
{
returnchildren[groupPosition].length;
}
publicTextViewgetGenericView()
{
//LayoutparametersfortheExpandableListView
AbsListView.LayoutParamslp=newAbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,64);
TextViewtextView=newTextView(DirectoryActivity.this);
textView.setLayoutParams(lp);
//Centerthetextvertically
textView.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT);
//Setthetextstartingposition
textView.setPadding(36,0,0,0);
returntextView;
}
publicViewgetChildView(intgroupPosition,intchildPosition,booleanisLastChild,ViewconvertView,ViewGroupparent)
{
TextViewtextView=getGenericView();
textView.setText(getChild(groupPosition,childPosition).toString());
returntextView;
}
publicObjectgetGroup(intgroupPosition)
{
returngroups[groupPosition];
}
publicintgetGroupCount()
{
returngroups.length;
}
publiclonggetGroupId(intgroupPosition)
{
returngroupPosition;
}
publicViewgetGroupView(intgroupPosition,booleanisExpanded,ViewconvertView,ViewGroupparent){TextViewtextView=getGenericView();
textView.setText(getGroup(groupPosition).toString());returntextView;
}
publicbooleanisChildSelectable(intgroupPosition,intchildPosition)
{
returntrue;
}
publicbooleanhasStableIds()
{
returntrue;
}
}
}
RouteActivity.java
packagecom.wpirl.activity;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.ArrayAdapter;
importandroid.widget.AutoCompleteTextView;
importandroid.widget.Button;
importandroid.widget.Toast;
importcom.wpirl.R;
importcom.wpirl.map.GraphNode;
importcom.wpirl.map.Map;
publicclassRouteActivity
extendsActivity
implementsOnClickListener
{
privateGraphNodesource;
privateGraphNodedestination;
privateAutoCompleteTextViewtextViewSource;
privateAutoCompleteTextViewtextViewDestination;
privateButtonbtnSearch;
@Override
protectedvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.route);
String[]database=Map.getDatabase(Map.DATABASE_PERSON+Map.DATABASE_ROOM);ArrayAdapteradapter=newArrayAdapter(this,android.R.layout.simple_dropdown_item_1line,database);
btnSearch=(Button)findViewById(R.id.btnSearchRoute);btnSearch.setOnClickListener(this);
textViewSource=(AutoCompleteTextView)findViewById(R.id.editSource);textViewSource.setAdapter(adapter);
textViewDestination=(AutoCompleteTextView)findViewById(R.id.edi