package net.simonvt.menudrawer.samples;
import java.util.ArrayList;
import java.util.List;
import net.simonvt.menudrawer.MenuDrawer;
import net.simonvt.menudrawer.Position;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import com.example.androidmenusample.R;
public abstract class BaseListSample extends FragmentActivity implements MenuAdapter.MenuListener {
private static final String STATE_ACTIVE_POSITION =
"net.simonvt.menudrawer.samples.LeftDrawerSample.activePosition";
protected MenuDrawer mMenuDrawer;
protected MenuAdapter mAdapter;
protected ListView mList;
private int mActivePosition = 0;
@Override
protected void onCreate(Bundle inState) {
super.onCreate(inState);
if (inState != null) {
mActivePosition = inState.getInt(STATE_ACTIVE_POSITION);
}
mMenuDrawer = MenuDrawer.attach(this, MenuDrawer.Type.BEHIND, getDrawerPosition(), getDragMode());
List<Object> items = new ArrayList<Object>();
items.add(new Item("Item 1", R.drawable.ic_action_refresh_dark));
items.add(new Item("Item 2", R.drawable.ic_action_select_all_dark));
items.add(new Category("Cat 1"));
items.add(new Item("Item 3", R.drawable.ic_action_refresh_dark));
items.add(new Item("Item 4", R.drawable.ic_action_select_all_dark));
items.add(new Category("Cat 2"));
items.add(new Item("Item 5", R.drawable.ic_action_refresh_dark));
items.add(new Item("Item 6", R.drawable.ic_action_select_all_dark));
items.add(new Category("Cat 3"));
items.add(new Item("Item 7", R.drawable.ic_action_refresh_dark));
items.add(new Item("Item 8", R.drawable.ic_action_select_all_dark));
items.add(new Category("Cat 4"));
items.add(new Item("Item 9", R.drawable.ic_action_refresh_dark));
items.add(new Item("Item 10", R.drawable.ic_action_select_all_dark));
mList = new ListView(this);
mAdapter = new MenuAdapter(this, items);
mAdapter.setListener(this);
mAdapter.setActivePosition(mActivePosition);
mList.setAdapter(mAdapter);
mList.setOnItemClickListener(mItemClickListener);
mMenuDrawer.setMenuView(mList);
}
protected abstract void onMenuItemClicked(int position, Item item);
protected abstract int getDragMode();
protected abstract Position getDrawerPosition();
private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mActivePosition = position;
mMenuDrawer.setActiveView(view, position);
mAdapter.setActivePosition(position);
onMenuItemClicked(position, (Item) mAdapter.getItem(position));
}
};
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(STATE_ACTIVE_POSITION, mActivePosition);
}
@Override
public void onActiveViewChanged(View v) {
mMenuDrawer.setActiveView(v, mActivePosition);
}
}