Created
June 2, 2015 22:41
-
-
Save valokafor/4767c923d7a281e539a4 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
package okason.com.attendanceapp.Activities; | |
import android.content.Intent; | |
import android.support.v4.app.Fragment; | |
import android.support.v4.widget.DrawerLayout; | |
import android.os.Bundle; | |
import android.support.v7.app.ActionBarDrawerToggle; | |
import android.support.v7.app.AppCompatActivity; | |
import android.support.v7.widget.LinearLayoutManager; | |
import android.support.v7.widget.RecyclerView; | |
import android.support.v7.widget.Toolbar; | |
import android.view.GestureDetector; | |
import android.view.Menu; | |
import android.view.MenuItem; | |
import android.view.MotionEvent; | |
import android.view.View; | |
import android.widget.Toast; | |
import java.util.ArrayList; | |
import java.util.List; | |
import okason.com.attendanceapp.Adapters.NavDrawerAdapter; | |
import okason.com.attendanceapp.Fragments.AttendantsList; | |
import okason.com.attendanceapp.Fragments.EventListFragment; | |
import okason.com.attendanceapp.Fragments.RegistrationFragment; | |
import okason.com.attendanceapp.Models.DrawerItem; | |
import okason.com.attendanceapp.R; | |
public class MainActivity extends AppCompatActivity { | |
private Toolbar mToolbar; | |
public String HEADER_NAME = "Val Okafor"; | |
public String HEADER_EMAIL = "[email protected]"; | |
public int HEADER_IMAGE = R.drawable.val_okafor; | |
private final static int ATTENDANTS_FRAGMENT = 1; | |
private final static int EVENTS_FRAGMENT = 2; | |
private final static int REGISTRATION_FRAGMENT = 3; | |
private final static int SETTINGS_FRAGMENT = 4; | |
private RecyclerView mRecyclerView; | |
private RecyclerView.LayoutManager mLayoutManager; | |
private DrawerLayout Drawer; | |
private ActionBarDrawerToggle mDrawerToggle; | |
private List<DrawerItem> dataList; | |
private RecyclerView.Adapter mAdapter; | |
private int currentFragment = 1; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
mToolbar = (Toolbar)findViewById(R.id.toolbar); | |
setSupportActionBar(mToolbar); | |
mRecyclerView = (RecyclerView) findViewById(R.id.RecyclerView); | |
mRecyclerView.setHasFixedSize(true); | |
dataList = new ArrayList<DrawerItem>(); | |
addItemsToDataList(); | |
mAdapter = new NavDrawerAdapter(dataList, this, HEADER_NAME, HEADER_EMAIL, HEADER_IMAGE); | |
mRecyclerView.setAdapter(mAdapter); | |
final GestureDetector mGestureDetector = | |
new GestureDetector(MainActivity.this, new GestureDetector.SimpleOnGestureListener() { | |
@Override | |
public boolean onSingleTapUp(MotionEvent e) { | |
return true; | |
} | |
}); | |
mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() { | |
@Override | |
public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) { | |
View child = recyclerView.findChildViewUnder(motionEvent.getX(),motionEvent.getY()); | |
if (child != null && mGestureDetector.onTouchEvent(motionEvent)){ | |
Drawer.closeDrawers(); | |
onTouchDrawer(recyclerView.getChildLayoutPosition(child)); | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public void onTouchEvent(RecyclerView rv, MotionEvent e) { | |
} | |
}); | |
mLayoutManager = new LinearLayoutManager(this); | |
mRecyclerView.setLayoutManager(mLayoutManager); | |
Drawer = (DrawerLayout) findViewById(R.id.DrawerLayout); | |
mDrawerToggle = new ActionBarDrawerToggle(this, Drawer, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) { | |
@Override | |
public void onDrawerOpened(View drawerView) { | |
super.onDrawerOpened(drawerView); | |
} | |
@Override | |
public void onDrawerClosed(View drawerView) { | |
super.onDrawerClosed(drawerView); | |
} | |
}; | |
Drawer.setDrawerListener(mDrawerToggle); | |
mDrawerToggle.syncState(); | |
onTouchDrawer(currentFragment); | |
} | |
@Override | |
public boolean onCreateOptionsMenu(Menu menu) { | |
// Inflate the menu; this adds items to the action bar if it is present. | |
getMenuInflater().inflate(R.menu.menu_main, menu); | |
return true; | |
} | |
@Override | |
public boolean onOptionsItemSelected(MenuItem item) { | |
// Handle action bar item clicks here. The action bar will | |
// automatically handle clicks on the Home/Up button, so long | |
// as you specify a parent activity in AndroidManifest.xml. | |
int id = item.getItemId(); | |
//noinspection SimplifiableIfStatement | |
if (id == R.id.action_settings) { | |
return true; | |
} | |
return super.onOptionsItemSelected(item); | |
} | |
private void makeToast(String message){ | |
Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); | |
} | |
public void openFragment(final Fragment fragment) { | |
getSupportFragmentManager() | |
.beginTransaction() | |
.replace(R.id.container, fragment) | |
.commit(); | |
} | |
private void onTouchDrawer(final int position) { | |
// if (currentFragment == position) return; | |
currentFragment = position; | |
switch (position) { | |
case ATTENDANTS_FRAGMENT: | |
openFragment(new AttendantsList()); | |
break; | |
case REGISTRATION_FRAGMENT: | |
openFragment(new RegistrationFragment()); | |
break; | |
case EVENTS_FRAGMENT: | |
openFragment(new EventListFragment()); | |
break; | |
case SETTINGS_FRAGMENT: | |
startActivity(new Intent(this, PreferenceActivity.class)); | |
default: | |
return; | |
} | |
} | |
private void addItemsToDataList(){ | |
dataList.add(new DrawerItem(getString(R.string.title_attendants), R.drawable.ic_action_attendants_list)); | |
dataList.add(new DrawerItem(getString(R.string.title_events), R.drawable.ic_action_events_list)); | |
dataList.add(new DrawerItem(getString(R.string.title_registration), R.drawable.ic_action_registration)); | |
// dataList.add(new DrawerItem(getString(R.string.title_reports), R.drawable.ic_action_report)); | |
dataList.add(new DrawerItem(getString(R.string.title_settings), R.drawable.ic_action_settings)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks a lot for your tutorial