Last active
August 29, 2015 14:06
-
-
Save billmote/bb7ad6e54cb3eefb0022 to your computer and use it in GitHub Desktop.
A ListView with 4 different row types built, originally, to populate a custom NavigationDrawer.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ... | |
@DebugLog | |
@Override | |
public boolean onOptionsItemSelected(MenuItem item) { | |
if (mDrawerToggle.onOptionsItemSelected(item)) { | |
return true; | |
} | |
switch (item.getItemId()) { | |
case android.R.id.home: | |
// Go back 1 screen as opposed to going all the way to "home" | |
// You can "add a favorite" then click to see a "contact detail" view. | |
// Going from contact detail view to home seemed abrupt. | |
this.getFragmentManager().popBackStack(); | |
return true; | |
default: | |
} | |
return super.onOptionsItemSelected(item); | |
} | |
// All our Naviation Drawer Code | |
private ActionBarDrawerToggle mDrawerToggle; | |
private CharSequence mDrawerTitle; | |
private CharSequence mTitle; | |
private CircularImageView mUserPhoto; | |
@InjectView(R.id.navigation_drawer) | |
public DrawerLayout mDrawerLayout; | |
@InjectView(R.id.navigation_drawer_list) | |
public ListView mNavigationDrawerList; | |
public void setupDrawer() { | |
List<Object> dataList = new ArrayList<Object>(); | |
dataList.add(new NavDrawerHeaderItem("Account Info")); | |
dataList.add(new NavDrawerContactItem("Account Name ... First and Last Name")); | |
dataList.add(new NavDrawerContactItem("Account Number ... 1-888-888-8888")); | |
dataList.add(new NavDrawerHeaderItem("Settings")); | |
dataList.add(new NavDrawerPreferenceItem("Notification Sounds ... checkbox")); | |
dataList.add(new NavDrawerHeaderItem("More Information")); | |
dataList.add(new NavDrawerLinkItem("Support ... >")); | |
dataList.add(new NavDrawerLinkItem("Privacy Policy ... >")); | |
dataList.add(new NavDrawerLinkItem("Terms of Use ... >")); | |
dataList.add(new NavDrawerLinkItem("LogOut ... >")); | |
NavigationDrawerAdapter adapter = new NavigationDrawerAdapter(this, R.layout.navigation_drawer_link_item, dataList); | |
LayoutInflater inflater = getLayoutInflater(); | |
ViewGroup contactDetailsHeader = (ViewGroup)inflater.inflate(R.layout.navigation_drawer_header_row, mNavigationDrawerList, false); | |
mUserPhoto = (CircularImageView) contactDetailsHeader.findViewById(R.id.contact_photo); | |
final UserLocalStorageHandler userDB; | |
userDB = new UserLocalStorageHandler(this); | |
User currentUser = null; | |
try { | |
currentUser = userDB.getCurrentUser(); | |
} catch (SQLException e) { | |
e.printStackTrace(); | |
} | |
//mUserPhoto.setImageDrawable(currentUser.get); | |
mNavigationDrawerList.addHeaderView(contactDetailsHeader, null, false); | |
mNavigationDrawerList.setAdapter(adapter); | |
mNavigationDrawerList.setOnItemClickListener(new DrawerItemClickListener()); | |
mTitle = mDrawerTitle = getTitle(); | |
mDrawerLayout.setDrawerShadow(R.drawable.ic_launcher, GravityCompat.START); | |
getActionBar().setDisplayHomeAsUpEnabled(true); | |
getActionBar().setHomeButtonEnabled(true); | |
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_launcher, R.string.action_add_more, R.string.action_done) { | |
public void onDrawerClosed(View view) { | |
getActionBar().setTitle(mTitle); | |
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() | |
} | |
public void onDrawerOpened(View drawerView) { | |
getActionBar().setTitle(mDrawerTitle); | |
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() | |
} | |
}; | |
mDrawerLayout.setDrawerListener(mDrawerToggle); | |
} | |
public void onDrawerOpened(View drawerView) { | |
getActionBar().setTitle(mDrawerTitle); | |
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() | |
} | |
private class DrawerItemClickListener implements ListView.OnItemClickListener { | |
@Override | |
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { | |
SelectItem(position); | |
} | |
} | |
public void SelectItem(int possition) { | |
Fragment fragment = null; | |
Bundle args = new Bundle(); | |
switch (possition) { | |
case 0: | |
default: | |
} | |
} | |
@Override | |
protected void onPostCreate(Bundle savedInstanceState) { | |
super.onPostCreate(savedInstanceState); | |
// Sync the toggle state after onRestoreInstanceState has occurred. | |
mDrawerToggle.syncState(); | |
} | |
@Override | |
public void onConfigurationChanged(Configuration newConfig) { | |
super.onConfigurationChanged(newConfig); | |
// Pass any configuration change to the drawer toggles | |
mDrawerToggle.onConfigurationChanged(newConfig); | |
} | |
// ... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment