MainActivity.java
public class MainActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {
private static final String Database_Path = "p_db/toko";
private static final String Database_Path_Sales = "p_db/sales";
private DatabaseReference mDatabaseReference;
private String verified = "0";
private Timer timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
mToolbar.setTitle("");
setSupportActionBar(mToolbar);
FragmentDrawer drawerFragment = (FragmentDrawer)
getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), mToolbar);
drawerFragment.setDrawerListener(this);
final TextView userEmail = (TextView)findViewById(R.id.userEmail);
if(FirebaseAuth.getInstance().getCurrentUser() != null){
try {
userEmail.setText("Hai, " + FirebaseAuth.getInstance().getCurrentUser().getDisplayName());
if(userEmail.getText().toString().contains("To")) {
getInfoToko(FirebaseAuth.getInstance().getCurrentUser().getEmail());
}else if(userEmail.getText().toString().contains("Sales")){
getInfoSales(FirebaseAuth.getInstance().getCurrentUser().getEmail());
}
}catch (NullPointerException e){
e.printStackTrace();
}
}else{
userEmail.setText("");
}
}
@Override
public void onDrawerItemSelected(View view, int position) {
displayView(position);
}
private void displayView(int position) {
if(FirebaseAuth.getInstance().getCurrentUser() != null) {
if(FirebaseAuth.getInstance().getCurrentUser().getDisplayName().contains("To")) {
switch (position) {
case 0:
if (verified.contains("1")) {
Intent ii = new Intent(this, UploadActivity.class);
startActivity(ii);
} else {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this, R.style.AppCompatAlertDialogStyle);
alertDialogBuilder
.setTitle("Title")
.setMessage("Message")
.setCancelable(false)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
final AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
TextView pesan = (TextView) alertDialog.findViewById(android.R.id.message);
pesan.setTextSize(15);
Button b = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
b.setTextColor(getResources().getColor(R.color.colorPrimary));
}
break;
case 1:
Intent iii = new Intent(this, KatalogActivity.class);
startActivity(iii);
break;
case 2:
Intent akun = new Intent(this, AkunMenuActivity.class);
startActivity(akun);
break;
case 3:
Intent bantuan = new Intent(this, HelpActivity.class);
startActivity(bantuan);
break;
case 4:
Intent tentang = new Intent(this, TentangActivity.class);
startActivity(tentang);
break;
case 5:
logout();
break;
default:
break;
}
}else if(FirebaseAuth.getInstance().getCurrentUser().getDisplayName().contains("Sales")) {
switch (position) {
case 0:
Intent lT = new Intent(this, DaftarTokoActivity.class);
startActivity(lT);
break;
case 1:
Intent akun = new Intent(this, AkunMenuActivity.class);
startActivity(akun);
break;
case 2:
Intent bantuan = new Intent(this, HelpActivity.class);
startActivity(bantuan);
break;
case 3:
Intent tentang = new Intent(this, TentangActivity.class);
startActivity(tentang);
break;
case 4:
logout();
break;
default:
break;
}
}
}else{
switch (position) {
case 0:
Intent i = new Intent(this, LoginActivity.class);
startActivity(i);
break;
case 1:
Intent nt = new Intent(this, NearestTokoActivity.class);
startActivity(nt);
break;
case 2:
Intent lT = new Intent(this, DaftarTokoActivity.class);
startActivity(lT);
break;
case 3:
Intent bantuan = new Intent(this, HelpActivity.class);
startActivity(bantuan);
break;
case 4:
Intent tentang = new Intent(this, TentangActivity.class);
startActivity(tentang);
break;
default:
break;
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
timer.cancel();
}
private void getInfoToko(String namaToko){
mDatabaseReference = FirebaseDatabase.getInstance().getReference(Database_Path);
Query searchQuery = mDatabaseReference.orderByChild("info/email").equalTo(namaToko);
searchQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Iterable<DataSnapshot> snapshotIterator = dataSnapshot.getChildren();
Iterator<DataSnapshot> iterator = snapshotIterator.iterator();
TokoUpload infoToko = new TokoUpload();
while((iterator.hasNext())){
infoToko = iterator.next().getValue(TokoUpload.class);
}
verified = infoToko.getVerified();
}
});
}
private void getInfoSales(String namaSales){
mDatabaseReference = FirebaseDatabase.getInstance().getReference(Database_Path_Sales);
Query searchQuery = mDatabaseReference.orderByChild("info/emailSales").equalTo(namaSales);
searchQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Iterable<DataSnapshot> snapshotIterator = dataSnapshot.getChildren();
Iterator<DataSnapshot> iterator = snapshotIterator.iterator();
SalesUpload infoSales = new SalesUpload();
while((iterator.hasNext())){
infoSales = iterator.next().getValue(SalesUpload.class);
}
verified = infoSales.getVerified();
}
});
}
}
FragmentDrawer.java
public class FragmentDrawer extends Fragment {
private ActionBarDrawerToggle mDrawerToggle;
private DrawerLayout mDrawerLayout;
private View containerView;
private static String[] titles = null;
private static String[] titles_login = null;
private static String[] titles_sales = null;
private FragmentDrawerListener drawerListener;
private static TypedArray navMenuIcons;
private static TypedArray navMenuIcons_login;
private static TypedArray navMenuIcons_sales;
public FragmentDrawer() {
}
public void setDrawerListener(FragmentDrawerListener listener) {
this.drawerListener = listener;
}
private static List<NavDrawerItem> getData() {
List<NavDrawerItem> data = new ArrayList<>();
if(FirebaseAuth.getInstance().getCurrentUser() != null) {
if(FirebaseAuth.getInstance().getCurrentUser().getDisplayName().contains("Toko")) {
for (int i = 0; i < titles_login.length; i++) {
NavDrawerItem navItem = new NavDrawerItem();
navItem.setTitle(titles_login[i]);
navItem.setIcon(navMenuIcons_login.getResourceId(i, i));
data.add(navItem);
}
}else if(FirebaseAuth.getInstance().getCurrentUser().getDisplayName().contains("Sales")) {
for (int i = 0; i < titles_sales.length; i++) {
NavDrawerItem navItem = new NavDrawerItem();
navItem.setTitle(titles_sales[i]);
navItem.setIcon(navMenuIcons_sales.getResourceId(i, i));
data.add(navItem);
}
}
}else {
for (int i = 0; i < titles.length; i++) {
NavDrawerItem navItem = new NavDrawerItem();
navItem.setTitle(titles[i]);
navItem.setIcon(navMenuIcons.getResourceId(i, i));
data.add(navItem);
}
}
return data;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
titles = getActivity().getResources().getStringArray(R.array.nav_drawer_labels);
titles_login = getActivity().getResources().getStringArray(R.array.nav_drawer_labels_login);
titles_sales = getActivity().getResources().getStringArray(R.array.nav_drawer_sales);
navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_icons);
navMenuIcons_login = getResources().obtainTypedArray(R.array.nav_drawer_icons_login);
navMenuIcons_sales = getResources().obtainTypedArray(R.array.nav_drawer_icons_sales);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
RecyclerView recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList);
NavigationDrawerAdapter adapter = new NavigationDrawerAdapter(getActivity(), getData());
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView, new ClickListener() {
@Override
public void onClick(View view, int position) {
drawerListener.onDrawerItemSelected(view, position);
mDrawerLayout.closeDrawer(containerView);
}
@Override
public void onLongClick(View view, int position) {
}
}));
return layout;
}
public void setUp(int fragmentId, DrawerLayout drawerLayout, final Toolbar toolbar) {
containerView = getActivity().findViewById(fragmentId);
mDrawerLayout = drawerLayout;
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
toolbar.setAlpha(1 - slideOffset/2);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerLayout.post(new Runnable() {
@Override
public void run() {
mDrawerToggle.syncState();
}
});
}
public interface ClickListener {
void onClick(View view, int position);
void onLongClick(View view, int position);
}
static class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {
private final GestureDetector gestureDetector;
private final ClickListener clickListener;
public RecyclerTouchListener(FragmentActivity context, final RecyclerView recyclerView, final ClickListener clickListener) {
this.clickListener = clickListener;
gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
@Override
public void onLongPress(MotionEvent e) {
View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null) {
clickListener.onLongClick(child, recyclerView.getChildPosition(child));
}
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
View child = rv.findChildViewUnder(e.getX(), e.getY());
if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) {
clickListener.onClick(child, rv.getChildPosition(child));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}
public interface FragmentDrawerListener {
void onDrawerItemSelected(View view, int position);
}
}
NavDrawerItem.java
public class NavDrawerItem {
private boolean showNotify;
private String title;
private int icon;
public NavDrawerItem() {
}
public NavDrawerItem(boolean showNotify, String title, int icon) {
this.showNotify = showNotify;
this.title = title;
this.icon = icon;
}
public boolean isShowNotify() {
return showNotify;
}
public void setShowNotify(boolean showNotify) {
this.showNotify = showNotify;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getIcon() {
return icon;
}
public void setIcon(int icon) {
this.icon = icon;
}
}
NavigationDrawerAdapter.java
public class NavigationDrawerAdapter extends RecyclerView.Adapter<NavigationDrawerAdapter.MyViewHolder> {
private List<NavDrawerItem> data = Collections.emptyList();
private LayoutInflater inflater;
public NavigationDrawerAdapter(Context context, List<NavDrawerItem> data) {
inflater = LayoutInflater.from(context);
this.data = data;
}
public void delete(int position) {
data.remove(position);
notifyItemRemoved(position);
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.nav_drawer_row, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
NavDrawerItem current = data.get(position);
holder.title.setText(current.getTitle());
holder.icon.setImageResource(current.getIcon());
}
@Override
public int getItemCount() {
return data.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView title;
ImageView icon;
public MyViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.title);
icon = (ImageView) itemView.findViewById(R.id.icon);
}
}
}
fragment_navigation_drawer.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@android:color/white">
<RelativeLayout
android:id="@+id/nav_header_container"
android:layout_width="match_parent"
android:layout_height="160dp"
android:layout_alignParentTop="true"
android:background="@drawable/backdrop_protoko">
<ImageView
android:id="@+id/userProf"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/ic_profile"
android:layout_centerInParent="true"
android:layout_alignParentTop="true"
android:layout_marginTop="20dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/userEmail"
android:textColor="#fff"
android:layout_marginTop="10dp"
android:textAlignment="center"
android:layout_below="@id/userProf"
android:textSize="16sp"/>
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/drawerList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/nav_header_container"
android:layout_marginTop="15dp" />
</RelativeLayout>
nav_drawer_row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:focusable="true"
android:clickable="true">
<ImageView
android:id="@+id/icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="5dp"
android:scaleType="fitXY"/>
<TextView
android:paddingBottom="17dp"
android:id="@+id/title"
android:layout_toEndOf="@id/icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:layout_marginRight="5dp"
android:layout_marginEnd="5dp"
android:textSize="14sp"
android:textColor="#000" />
</RelativeLayout>
toolbar.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="45dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/colorPrimary"
app:titleTextColor="#fff">
<ImageView
android:layout_width="90dp"
android:layout_height="25dp"
android:src="@drawable/textlogo"/>
</android.support.v7.widget.Toolbar>
строки.XML
<resources>
<string name="app_name">Lat1</string>
<string name="nav_item_masuk">Masuk</string>
<string name="nav_item_daftar_toko">Daftar Toko</string>
<string name="nav_item_toko">Toko Terdekat</string>
<string name="nav_item_pasang">Pasang Promo</string>
<string name="nav_item_katalog">Katalog Promoku</string>
<string name="nav_item_akun">Akun Saya</string>
<string name="nav_item_bantuan">Pusat Bantuan</string>
<string name="nav_item_tentang">Tentang Aplikasi</string>
<string name="nav_item_keluar">Keluar</string>
<string name="drawer_open">Open</string>
<string name="drawer_close">Close</string>
<string-array name="nav_drawer_labels">
<item>@string/nav_item_masuk</item>
<item>@string/nav_item_toko</item>
<item>@string/nav_item_daftar_toko</item>
<item>@string/nav_item_bantuan</item>
<item>@string/nav_item_tentang</item>
</string-array>
<string-array name="nav_drawer_labels_login">
<item>@string/nav_item_pasang</item>
<item>@string/nav_item_katalog</item>
<item>@string/nav_item_akun</item>
<item>@string/nav_item_bantuan</item>
<item>@string/nav_item_tentang</item>
<item>@string/nav_item_keluar</item>
</string-array>
<string-array name="nav_drawer_sales">
<item>@string/nav_item_daftar_toko</item>
<item>@string/nav_item_akun</item>
<item>@string/nav_item_bantuan</item>
<item>@string/nav_item_tentang</item>
<item>@string/nav_item_keluar</item>
</string-array>
<array name="nav_drawer_icons_login">
<item>@drawable/sc_pasang</item>
<item>@drawable/sc_katalog</item>
<item>@drawable/sc_akun</item>
<item>@drawable/sc_bantuan</item>
<item>@drawable/sc_tentang</item>
<item>@drawable/sc_keluar</item>
</array>
<array name="nav_drawer_icons_sales">
<item>@drawable/sc_list_toko</item>
<item>@drawable/sc_akun</item>
<item>@drawable/sc_bantuan</item>
<item>@drawable/sc_tentang</item>
<item>@drawable/sc_keluar</item>
</array>
<array name="nav_drawer_icons">
<item>@drawable/sc_login</item>
<item>@drawable/sc_toko</item>
<item>@drawable/sc_list_toko</item>
<item>@drawable/sc_bantuan</item>
<item>@drawable/sc_tentang</item>
</array>
<string-array name="kategori">
<item>Aneka Jenis Makanan</item>
<item>Aneka Jenis Minuman</item>
<item>Oleh-Oleh dan Cinderamata</item>
<item>Produk Rumah Tangga</item>
<item>Perlengkapan Anak</item>
<item>Alat Tulis Kantor</item>
<item>Perawatan Tubuh</item>
<item>Pakaian dan Aksesoris</item>
<item>Dapur dan Sembako</item>
<item>Peralatan Olahraga</item>
<item>Jenis Produk Lainnya</item>
</string-array>
<string-array name="urut">
<item>Promo Terbaru</item>
<item>Promo Terlama</item>
<item>Jarak Terdekat</item>
<item>Harga (Rendah ke Tinggi)</item>
<item>Harga (Tinggi ke Rendah)</item>
</string-array>
</resources>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<android.support.design.widget.CoordinatorLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clipToPadding="false">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways|snap"
android:clipToPadding="false">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@color/colorPrimary"
android:elevation="5dp">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
</LinearLayout>
<LinearLayout
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true">
<SearchView
android:id="@+id/svCari"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:queryHint="Cari Promo"
android:background="@drawable/rounded_bg_white"
android:elevation="3dp"
android:searchIcon="@drawable/ic_search"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:iconifiedByDefault="false">
</SearchView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
app:tabIndicatorColor="#FFF"
app:tabSelectedTextColor="#FFF"
app:tabIndicatorHeight="5dp"
app:tabTextAppearance="@style/TabLayoutTextStyle"/>
</LinearLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/vpTab"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
<fragment
android:id="@+id/fragment_navigation_drawer"
android:name="com.luckynuts.lat1.FragmentDrawer"
android:layout_width="260dp"
android:layout_height="match_parent"
android:layout_gravity="start"
app:layout="@layout/fragment_navigation_drawer"
tools:layout="@layout/fragment_navigation_drawer" />
</android.support.v4.widget.DrawerLayout>
У меня схожая и странная проблема: http://stackoverflow.com/questions/24863616/background-image-and-image-view-in-navigation-drawer/: мне удалось получить рабочий ящик, но у меня есть несколько ошибок. Не знаете, как это исправить? – TheDevMan
OK! Я знаю, что могу сделать это просто в андроид-студии, но как насчет того, чтобы изменить шрифт ящика для навигации? –
@AmirH Пожалуйста, выберите новый вопрос в Stackoverflow. – JJD