package bf.io.openshop.ux.adapters; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import java.util.ArrayList; import java.util.List; import bf.io.openshop.R; import bf.io.openshop.entities.drawerMenu.DrawerItemCategory; import bf.io.openshop.interfaces.DrawerSubmenuRecyclerInterface; /** * Adapter handling list of drawer sub-items. */ public class DrawerSubmenuRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private final DrawerSubmenuRecyclerInterface drawerSubmenuRecyclerInterface; private LayoutInflater layoutInflater; private List<DrawerItemCategory> drawerItemCategoryList = new ArrayList<>(); /** * Creates an adapter that handles a list of drawer sub-items. * * @param drawerSubmenuRecyclerInterface listener indicating events that occurred. */ public DrawerSubmenuRecyclerAdapter(DrawerSubmenuRecyclerInterface drawerSubmenuRecyclerInterface) { this.drawerSubmenuRecyclerInterface = drawerSubmenuRecyclerInterface; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (layoutInflater == null) layoutInflater = LayoutInflater.from(parent.getContext()); View view = layoutInflater.inflate(R.layout.list_item_drawer_category, parent, false); return new ViewHolderItemCategory(view, drawerSubmenuRecyclerInterface); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { ViewHolderItemCategory viewHolderItemCategory = (ViewHolderItemCategory) holder; DrawerItemCategory drawerItemCategory = getDrawerItem(position); viewHolderItemCategory.bindContent(drawerItemCategory); viewHolderItemCategory.itemText.setText(drawerItemCategory.getName()); viewHolderItemCategory.subMenuIndicator.setVisibility(View.INVISIBLE); } // This method returns the number of items present in the list @Override public int getItemCount() { return drawerItemCategoryList.size(); } private DrawerItemCategory getDrawerItem(int position) { return drawerItemCategoryList.get(position); } public void changeDrawerItems(List<DrawerItemCategory> children) { drawerItemCategoryList.clear(); drawerItemCategoryList.addAll(children); notifyDataSetChanged(); } // Provide a reference to the views for each data item public static class ViewHolderItemCategory extends RecyclerView.ViewHolder { public TextView itemText; public ImageView subMenuIndicator; public LinearLayout layout; private DrawerItemCategory drawerItemCategory; public ViewHolderItemCategory(View itemView, final DrawerSubmenuRecyclerInterface drawerSubmenuRecyclerInterface) { super(itemView); itemText = (TextView) itemView.findViewById(R.id.drawer_list_item_text); subMenuIndicator = (ImageView) itemView.findViewById(R.id.drawer_list_item_indicator); layout = (LinearLayout) itemView.findViewById(R.id.drawer_list_item_layout); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { drawerSubmenuRecyclerInterface.onSubCategorySelected(v, drawerItemCategory); } }); } public void bindContent(DrawerItemCategory drawerItemCategory) { this.drawerItemCategory = drawerItemCategory; } } }