package com.example.androidmenusample; import java.util.ArrayList; import java.util.List; import net.simonvt.menudrawer.samples.ActionBarSherlockSample; import net.simonvt.menudrawer.samples.BottomDrawerSample; import net.simonvt.menudrawer.samples.BottomOverlaySample; import net.simonvt.menudrawer.samples.FragmentSample; import net.simonvt.menudrawer.samples.LayoutSample; import net.simonvt.menudrawer.samples.LeftDrawerSample; import net.simonvt.menudrawer.samples.LeftOverlaySample; import net.simonvt.menudrawer.samples.ListActivitySample; import net.simonvt.menudrawer.samples.RightDrawerSample; import net.simonvt.menudrawer.samples.RightOverlaySample; import net.simonvt.menudrawer.samples.StaticDrawerSample; import net.simonvt.menudrawer.samples.TopDrawerSample; import net.simonvt.menudrawer.samples.TopOverlaySample; import net.simonvt.menudrawer.samples.ViewPagerSample; import net.simonvt.menudrawer.samples.WindowSample; import android.app.ListActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; public class MenuDrawerActivity extends ListActivity { private SamplesAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mAdapter = new SamplesAdapter(); mAdapter.addHeader("Sliding drawer"); mAdapter.addSample("Left drawer", "Only the content area is dragged.", LeftDrawerSample.class); mAdapter.addSample("Right drawer", "The menu is positioned to the right of the content", RightDrawerSample.class); mAdapter.addSample("Top drawer", "The menu is positioned above the content", TopDrawerSample.class); mAdapter.addSample("Bottom drawer", "The menu is positioned below the content", BottomDrawerSample.class); mAdapter.addSample("ListActivity sample", "Shows how to use the drawer with a ListActivity.", ListActivitySample.class); mAdapter.addSample("Window sample", "The entire window is dragged.", WindowSample.class); mAdapter.addSample("ViewPager", "A left drawer that can only be dragged open when the ViewPager is on the first page", ViewPagerSample.class); mAdapter.addSample("Layout xml", "The drawer and its menu and content is defined in XML", LayoutSample.class); mAdapter.addSample("Fragments", "Sample that uses fragments as the content", FragmentSample.class); mAdapter.addSample("ActionBarSherlock sample", "Showcases the drawer used with ActionBarSherlock.", ActionBarSherlockSample.class); mAdapter.addHeader("Static drawer"); mAdapter.addSample("Static drawer", "The drawer is always visible", StaticDrawerSample.class); mAdapter.addHeader("Overlay drawer"); mAdapter.addSample("Left overlay", "The drawer can be dragged in from the left.", LeftOverlaySample.class); mAdapter.addSample("Top overlay", "The drawer can be dragged in from the top.", TopOverlaySample.class); mAdapter.addSample("Right overlay", "The drawer can be dragged in from the right.", RightOverlaySample.class); mAdapter.addSample("Bottom overlay", "The drawer can be dragged in from the bottom.", BottomOverlaySample.class); setListAdapter(mAdapter); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { SampleItem sample = (SampleItem) mAdapter.getItem(position); Intent i = new Intent(this, sample.mClazz); startActivity(i); } private static class Header { String mTitle; public Header(String title) { mTitle = title; } } private static class SampleItem { String mTitle; String mSummary; Class mClazz; public SampleItem(String title, String summary, Class clazz) { mTitle = title; mSummary = summary; mClazz = clazz; } } public class SamplesAdapter extends BaseAdapter { private List<Object> mItems = new ArrayList<Object>(); public void addHeader(String title) { mItems.add(new Header(title)); } public void addSample(String title, String summary, Class clazz) { mItems.add(new SampleItem(title, summary, clazz)); } @Override public int getCount() { return mItems.size(); } @Override public Object getItem(int position) { return mItems.get(position); } @Override public long getItemId(int position) { return position; } @Override public int getItemViewType(int position) { return getItem(position) instanceof Header ? 0 : 1; } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (getItemViewType(position) == 0) { TextView v = (TextView) convertView; if (v == null) { v = (TextView) getLayoutInflater().inflate(R.layout.list_row_sample_header, parent, false); } v.setText(((Header) getItem(position)).mTitle); return v; } else { SampleItem sample = (SampleItem) getItem(position); View v = convertView; if (v == null) { v = getLayoutInflater().inflate(R.layout.list_row_sample, parent, false); } ((TextView) v.findViewById(R.id.title)).setText(sample.mTitle); ((TextView) v.findViewById(R.id.summary)).setText(sample.mSummary); return v; } } } }