Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class FoodMenuRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
- List<FoodMenuItem> foodMenuItems;
- List<Object> objects;
- FoodMenuParentListener foodMenuParentListener;
- boolean isAddAllowed;
- int expandIndex = -1;
- boolean isVegOnly;
- final int TYPE_FOOD = 0;
- final int TYPE_MENU_ITEM = 1;
- public FoodMenuRecyclerAdapter(List<FoodMenuItem> foodMenuItems, FoodMenuParentListener foodMenuParentListener, boolean isVegOnly, boolean isAddAllowed) {
- this.foodMenuItems = foodMenuItems;
- this.foodMenuParentListener = foodMenuParentListener;
- this.isVegOnly = isVegOnly;
- this.isAddAllowed = isAddAllowed;
- objects = new ArrayList<>();
- for (FoodMenuItem foodMenuItem : foodMenuItems) {
- objects.add(foodMenuItem);
- objects.addAll(foodMenuItem.getItems());
- }
- }
- @Override
- public int getItemViewType(int position) {
- Object object = objects.get(position);
- if (object instanceof FoodMenuItem) {
- return TYPE_FOOD;
- } else {
- return TYPE_MENU_ITEM;
- }
- }
- @NonNull
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
- View view;
- switch (getItemViewType(i)) {
- case TYPE_FOOD:
- view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_food_parent, viewGroup, false);
- return new MenuViewHolder(view);
- case TYPE_MENU_ITEM:
- view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_food_child, viewGroup, false);
- return new ChildMenuHolder(view);
- default:
- throw new IllegalArgumentException("Invalid viewType");
- }
- }
- @Override
- public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
- Object object = objects.get(i);
- if (getItemViewType(i) == TYPE_MENU_ITEM) {
- ChildMenuHolder childMenuHolder = (ChildMenuHolder) viewHolder;
- Context context = viewHolder.itemView.getContext();
- Item item = (Item) object;
- childMenuHolder.tvTitle.setText(item.getTitle());
- childMenuHolder.txtQty.setText(String.valueOf(item.getQuatity()));
- childMenuHolder.txtCartInc.setVisibility(item.isAddedToCart() ? View.VISIBLE : View.GONE);
- childMenuHolder.txtQty.setVisibility(item.isAddedToCart() ? View.VISIBLE : View.GONE);
- childMenuHolder.txtCartDec.setVisibility(item.isAddedToCart() ? View.VISIBLE : View.GONE);
- childMenuHolder.btnAdd.setVisibility(!item.isAddedToCart() ? View.VISIBLE : View.GONE);
- childMenuHolder.btnAdd.setBackgroundResource(isAddAllowed ? R.drawable.rounded_bottom_edge_shape_food : R.drawable.rounded_bottom_edge_shape_disable);
- childMenuHolder.btnAdd.setTextColor(isAddAllowed ? ContextCompat.getColor(context, R.color.button_green) : ContextCompat.getColor(context, R.color.gray_a1));
- childMenuHolder.ivType.setColorFilter(item.getType().equalsIgnoreCase(Item.FOOD_TYPE_VEG) ? ContextCompat.getColor(context, R.color.selected_green) : ContextCompat.getColor(context, R.color.app_red));
- } else {
- FoodMenuItem foodMenuItem = (FoodMenuItem) object;
- MenuViewHolder menuViewHolder = (MenuViewHolder) viewHolder;
- //menuViewHolder.rvMenu.setLayoutManager(new LinearLayoutManager(viewHolder.itemView.getContext(), LinearLayoutManager.VERTICAL, false));
- if (isVegOnly) {
- List<Item> items = new ArrayList<>();
- for (Item item : foodMenuItem.getItems()) {
- if (item.getType().equalsIgnoreCase(Item.FOOD_TYPE_VEG)) {
- items.add(item);
- }
- }
- menuViewHolder.tvNumItems.setText("(" + items.size() + " items)");
- } else {
- menuViewHolder.tvNumItems.setText("(" + foodMenuItem.getItems().size() + " items)");
- }
- menuViewHolder.ivArrow.setImageResource(foodMenuItem.isExpanded() ? R.drawable.chev_up : R.drawable.chev_down);
- menuViewHolder.tvTitle.setText(foodMenuItem.getCategoryName());
- }
- }
- @Override
- public int getItemCount() {
- return objects.size();
- }
- public class MenuViewHolder extends RecyclerView.ViewHolder {
- TextView tvTitle;
- TextView tvNumItems;
- ImageView ivArrow;
- // RecyclerView rvMenu;
- View rlArrow;
- public MenuViewHolder(@NonNull View itemView) {
- super(itemView);
- tvTitle = (TextView) itemView.findViewById(R.id.tvTitle);
- tvNumItems = (TextView) itemView.findViewById(R.id.tvNumItems);
- ivArrow = (ImageView) itemView.findViewById(R.id.ivArrow);
- // rvMenu.setNestedScrollingEnabled(false);
- rlArrow = itemView.findViewById(R.id.rlArrow);
- rlArrow.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- if (foodMenuParentListener != null) {
- Object object = objects.get(getAdapterPosition());
- if (object instanceof FoodMenuItem) {
- FoodMenuItem foodMenuItem = (FoodMenuItem) object;
- foodMenuParentListener.OnExpandClick(foodMenuItem, getAdapterPosition());
- }
- }
- }
- });
- tvTitle.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- if (foodMenuParentListener != null) {
- Object object = objects.get(getAdapterPosition());
- if (object instanceof FoodMenuItem) {
- FoodMenuItem foodMenuItem = (FoodMenuItem) object;
- foodMenuParentListener.OnExpandClick(foodMenuItem, getAdapterPosition());
- }
- }
- }
- });
- }
- }
- public boolean isVegOnly() {
- return isVegOnly;
- }
- public void setVegOnly(boolean vegOnly) {
- isVegOnly = vegOnly;
- }
- public interface FoodMenuParentListener extends AddItemListener {
- public void OnExpandClick(FoodMenuItem foodMenuItem, int position);
- public void OnVegOnlyClicked();
- }
- public class ChildMenuHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
- ImageView ivType;
- TextView tvTitle;
- TextView tvPrice;
- TextView txtCartDec;
- TextView txtQty;
- TextView txtCartInc;
- Button btnAdd;
- public ChildMenuHolder(@NonNull View itemView) {
- super(itemView);
- ivType = (ImageView) itemView.findViewById(R.id.ivType);
- tvTitle = (TextView) itemView.findViewById(R.id.tvTitle);
- tvPrice = (TextView) itemView.findViewById(R.id.tvPrice);
- txtCartDec = (TextView) itemView.findViewById(R.id.txtCartDec);
- txtQty = (TextView) itemView.findViewById(R.id.txtQty);
- txtCartInc = (TextView) itemView.findViewById(R.id.txtCartInc);
- btnAdd = (Button) itemView.findViewById(R.id.btnAdd);
- btnAdd.setOnClickListener(this);
- txtCartInc.setOnClickListener(this);
- txtCartDec.setOnClickListener(this);
- }
- @Override
- public void onClick(View view) {
- }
- }
- public void setExpandIndex(int expandIndex) {
- }
- public boolean isItemExpanded(int position) {
- return true;
- }
- public List<FoodMenuItem> getFoodMenuItems() {
- return foodMenuItems;
- }
- public void setFoodMenuItems(List<FoodMenuItem> foodMenuItems) {
- this.foodMenuItems = foodMenuItems;
- }
- public class VegOnlyViewHolder extends RecyclerView.ViewHolder {
- Switch wtVeg;
- public VegOnlyViewHolder(@NonNull View itemView) {
- super(itemView);
- wtVeg = (Switch) itemView.findViewById(R.id.wtVeg);
- wtVeg.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
- if (foodMenuParentListener != null) {
- foodMenuParentListener.OnVegOnlyClicked();
- }
- }
- });
- }
- }
- public interface AddItemListener {
- public void onAddClicked(Item item, int parentIndex);
- public void increaseItemCount(Item item, int parentIndex);
- public void decreaseItemCount(Item item, int parentIndex);
- }
- public void addAll(int position, List<Item> objects) {
- this.objects.addAll(position, objects);
- }
- public void addItem(int position, Item object) {
- this.objects.add(position, object);
- }
- public void removeItem(Object object) {
- this.objects.remove(object);
- }
- public void removeAll(List<Item> objects) {
- this.objects.removeAll(objects);
- }
- public Object isItemInList(Item item) {
- for (Object object : objects) {
- if (object instanceof Item && ((Item) object).getId().equals(item.getId())) {
- return object;
- }
- }
- return null;
- }
- }
- public void OnExpandClick(FoodMenuItem foodMenuItem, int position) {
- if (recyclerViewMenu != null && recyclerViewMenu.getAdapter() != null) {
- FoodMenuRecyclerAdapter foodMenuRecyclerAdapter = (FoodMenuRecyclerAdapter) recyclerViewMenu.getAdapter();
- foodMenuItem.setExpanded(!foodMenuItem.isExpanded());
- if (foodMenuItem.isExpanded()) {
- foodMenuRecyclerAdapter.addAll(position + 1, foodMenuItem.getItems());
- foodMenuRecyclerAdapter.notifyItemRangeInserted(position, foodMenuItem.getItems().size());
- } else {
- foodMenuRecyclerAdapter.removeAll(foodMenuItem.getItems());
- foodMenuRecyclerAdapter.notifyItemRangeRemoved(position +1 , foodMenuItem.getItems().size());
- }
- }
- }
- java.lang.ClassCastException: com.myapp.android.pojoentities.Item cannot be cast to com.myapp.android.pojoentities.FoodMenuItem
- at com.myapp.android.food.menu.FoodMenuRecyclerAdapter.onBindViewHolder(FoodMenuRecyclerAdapter.java:104)
- at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6781)
- at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6823)
- at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5752)
- at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6019)
- at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858)
- at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854)
- at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230)
- at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557)
- at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)
- at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612)
- at android.support.v7.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:3875)
- at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3639)
- at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:4194)
- at android.view.View.layout(View.java:16636)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
- at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
- at android.view.View.layout(View.java:16636)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
- at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
- at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
- at android.view.View.layout(View.java:16636)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1183)
- at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:870)
- at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:889)
- at android.view.View.layout(View.java:16636)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
- at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
- at com.myapp.android.custom.FitsSystemWindowsFrameLayout.onLayout(FitsSystemWindowsFrameLayout.java:247)
- at android.view.View.layout(View.java:16636)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1231)
- at android.view.View.layout(View.java:16636)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
- at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
- at android.view.View.layout(View.java:16636)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
- at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
- at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
- at android.view.View.layout(View.java:16636)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
- at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
- at android.view.View.layout(View.java:16636)
- at android.view.ViewGroup.layout(ViewGroup.java:5437)
- at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
- at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
- at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
- at android.view.View.layout(View.java:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement