0

Card 1 for Ingredients and layout 2 for steps - Image public class DetailAdapter extends RecyclerView.Adapter {

    private List<Ingredient> ingredientList;
    private List<Step> stepList;
    private Context context;

    private boolean check;
    private int which_layout;


    public DetailAdapter(Context context, BakingModel bakingModel){
       // Log.d("Inside Adapter" , bakingModel.getIngredients().get(0).getIngredient());
        this.context = context;
        ingredientList = bakingModel.getIngredients();
        ingredientList.addAll(bakingModel.getIngredients());
        stepList = bakingModel.getSteps();
        stepList.addAll(bakingModel.getSteps());
        Log.d("Inside Adapter" , ingredientList.get(0).getIngredient());
        check = false;
        which_layout = 0;
    }

    public static class DetailView1 extends RecyclerView.ViewHolder {

        @Nullable@BindView(R.id.ingredient)
        TextView textView_ing;
        @Nullable@BindView(R.id.ingredient_list)
        EditText editText_inglist;


        public DetailView1(View itemView) {
            super(itemView);
            ButterKnife.bind(this,itemView);

        }
    }

    public static class DetailView2 extends RecyclerView.ViewHolder{

        @Nullable @BindView(R.id.step)
        TextView textView_step;

        public DetailView2(View itemView) {
            super(itemView);
            ButterKnife.bind(this,itemView);
        }

    }

    @Override
    public int getItemViewType(int position) {
        if(!check){
            which_layout = 1;
            check = true;
            Log.d("getItemView","Layout 1");

        }
        else {
            which_layout = 2;
        }
        return  which_layout;

    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

        RecyclerView.ViewHolder viewHolder;
        LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());

        switch (which_layout){
            case 1 :
                View v1 = inflater.inflate(R.layout.fragment_detail1,viewGroup,false);
                viewHolder = new DetailView1(v1);
                Log.d("onCreateView","Create Layout 1");
                break;
            default:
                View v2 = inflater.inflate(R.layout.fragment_detail2,viewGroup,false);
                viewHolder = new DetailView2(v2);
                Log.d("onCreateView","Create Layout 2");
        }

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
        switch (viewHolder.getItemViewType()) {
            case 1 :
                DetailView1 detailView1 = (DetailView1) viewHolder;
                detailView1.textView_ing.setText(R.string.ingredients);
                for(Ingredient ingredient : ingredientList) {
                    detailView1.editText_inglist.append(ingredient.getIngredient() + "\n");
                }
                Log.d("onBindView","Bind Layout 1");
                break;
            default:
                DetailView2 detailView2= (DetailView2) viewHolder;
                detailView2.textView_step.setText(stepList.get(i).getShortDescription());
                Log.d("onBindView","Bind Layout 2");
        }

    }

    @Override
    public int getItemCount() {
        return stepList.size()+1;
    }
}

When I change the value of which layout under the getItemView to 1 then the same edit text is filled stepList.size() number of times. Otherwise if it is as it is now, then there is no edit text. Only the step description that is DetailView2 is being populated.

DetailView1 is being replaced by DetailView2.

Edit : Basically what I am trying to achieve is create a card for ingredients. And then multiple cards for steps.

Akhil Raja
  • 41
  • 5

0 Answers0