diff --git a/app/build.gradle b/app/build.gradle index e20f605..7c07659 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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' } diff --git a/app/src/main/java/ch/pizzalink/android/activity/MainActivity.java b/app/src/main/java/ch/pizzalink/android/activity/MainActivity.java index 65ee5da..7da5692 100644 --- a/app/src/main/java/ch/pizzalink/android/activity/MainActivity.java +++ b/app/src/main/java/ch/pizzalink/android/activity/MainActivity.java @@ -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 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 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 list; + int pstn; + + CategorySection(int pstn, String title, List 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); + } + } + } diff --git a/app/src/main/res/layout/row_subcategory.xml b/app/src/main/res/layout/row_subcategory.xml new file mode 100644 index 0000000..6f19ad9 --- /dev/null +++ b/app/src/main/res/layout/row_subcategory.xml @@ -0,0 +1,12 @@ + + \ No newline at end of file