drawer expandeble menu

This commit is contained in:
2017-10-04 00:00:09 +03:00
parent cb01677e2b
commit 83f08e0570
3 changed files with 120 additions and 19 deletions

View File

@@ -44,6 +44,7 @@ dependencies {
compile 'com.afollestad.material-dialogs:core:0.9.4.5'
compile 'com.github.AndroidDeveloperLB:DialogShard:3'
compile 'com.github.HITGIF:TextFieldBoxes:1.3.3'
compile 'io.github.luizgrp.sectionedrecyclerviewadapter:sectionedrecyclerviewadapter:1.1.3'
testCompile 'junit:junit:4.12'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
}

View File

@@ -11,12 +11,15 @@ import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
@@ -42,6 +45,9 @@ import ch.pizzalink.android.helper.SharedPrefsHelper;
import ch.pizzalink.android.interfaces.RecyclerItemClickListener;
import ch.pizzalink.android.model.CategoryModel;
import ch.pizzalink.android.view.PizzalinkToolbar;
import io.github.luizgrp.sectionedrecyclerviewadapter.SectionParameters;
import io.github.luizgrp.sectionedrecyclerviewadapter.SectionedRecyclerViewAdapter;
import io.github.luizgrp.sectionedrecyclerviewadapter.StatelessSection;
public class MainActivity extends BaseActivity {
@@ -55,6 +61,8 @@ public class MainActivity extends BaseActivity {
private ArrayList<CategoryModel> categoryList = new ArrayList<>();
private NavigationMenuRecyclerAdapter navigationMenuRecyclerAdapter;
private SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -144,24 +152,6 @@ public class MainActivity extends BaseActivity {
});
}
private void initNavigationMenuRecyclerView(){
categoryList = SharedPrefsHelper.readCategoryList();
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
navigationMenuRecyclerView.setLayoutManager(layoutManager);
navigationMenuRecyclerAdapter = new NavigationMenuRecyclerAdapter(categoryList, new RecyclerItemClickListener() {
@Override
public void onItemClick(View view, int position) {
fragmentManager.beginTransaction().replace(R.id.fragmentContainer,
MenuFragment.newInstance(categoryList.get(position))).commit();
currentFragmentName = OwnPizzaFragment.FRAGMENT_NAME;
drawerLayout.closeDrawers();
}
});
navigationMenuRecyclerView.setAdapter(navigationMenuRecyclerAdapter);
}
private void openNavigationDrawer(){
drawerLayout.openDrawer(GravityCompat.START);
}
@@ -273,6 +263,104 @@ public class MainActivity extends BaseActivity {
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
else
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
}
private void initNavigationMenuRecyclerView(){
categoryList = SharedPrefsHelper.readCategoryList();
for(int i = 0; i < categoryList.size(); i++){
List<CategoryModel> subcategoryList = categoryList.get(i).getSubCategoryList();
sectionAdapter.addSection(new CategorySection(i, categoryList.get(i).getName(), subcategoryList));
}
navigationMenuRecyclerView.setLayoutManager(new LinearLayoutManager(this));
navigationMenuRecyclerView.setAdapter(sectionAdapter);
}
private class CategorySection extends StatelessSection {
String title;
List<CategoryModel> list;
int pstn;
CategorySection(int pstn, String title, List<CategoryModel> list) {
super(new SectionParameters.Builder(R.layout.row_subcategory)
.headerResourceId(R.layout.row_category)
.build());
this.title = title;
this.list = list;
this.pstn = pstn;
}
@Override
public int getContentItemsTotal() {
return list.size();
}
@Override
public RecyclerView.ViewHolder getItemViewHolder(View view) {
return new ItemViewHolder(view);
}
@Override
public void onBindItemViewHolder(RecyclerView.ViewHolder holder, final int position) {
final ItemViewHolder itemHolder = (ItemViewHolder) holder;
String name = list.get(position).getName();
itemHolder.subcategoryNameItem.setText("- " + name);
itemHolder.rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fragmentManager.beginTransaction().replace(R.id.fragmentContainer,
MenuFragment.newInstance(list.get(position))).commit();
currentFragmentName = OwnPizzaFragment.FRAGMENT_NAME;
drawerLayout.closeDrawers();
}
});
}
@Override
public RecyclerView.ViewHolder getHeaderViewHolder(View view) {
return new HeaderViewHolder(view);
}
@Override
public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) {
final HeaderViewHolder headerHolder = (HeaderViewHolder) holder;
headerHolder.categoryNameItem.setText(title);
headerHolder.rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
fragmentManager.beginTransaction().replace(R.id.fragmentContainer,
MenuFragment.newInstance(categoryList.get(pstn))).commit();
currentFragmentName = OwnPizzaFragment.FRAGMENT_NAME;
drawerLayout.closeDrawers();
}
});
}
}
private class HeaderViewHolder extends RecyclerView.ViewHolder {
private final View rootView;
private final TextView categoryNameItem;
HeaderViewHolder(View view) {
super(view);
rootView = view;
categoryNameItem = (TextView) view.findViewById(R.id.categoryNameItem);
}
}
private class ItemViewHolder extends RecyclerView.ViewHolder {
private final View rootView;
private final TextView subcategoryNameItem;
ItemViewHolder(View view) {
super(view);
rootView = view;
subcategoryNameItem = (TextView) view.findViewById(R.id.subcategoryNameItem);
}
}
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/subcategoryNameItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:padding="20dp"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:textSize="16sp"
android:textStyle="bold" />