zomato как страница ресторана или представление Recycler с повторением элемента и заголовком - PullRequest
0 голосов
/ 28 ноября 2018

Как создать представление переработчика со следующим типом, как показано на рисунке ниже:

Еда в ведре Изображение:

enter image description here

ЦыпленокИзображение:

enter image description here

Как показано выше на изображении с ведрами питания, есть категория с именем Chicken, имеющая 2 элемента, в то время как, как показано на изображении цыпленка,Есть 4 элемента в категории с именем Burgers.

Итак, мой вопрос: как создать такой список с повторяющимися элементами, а не заголовком, пока не появятся другие данные категории.

Текстовое меню:

Курица

  • Горячая и хрустящая курица
  • Дымчатая курица

Бургер

  • Овощной бургер длиннее
  • Овощной бургер с имбирем
  • Куриный бургер с зингером
  • Куриный шрот с зингером

Данныевыглядит так:

"category": [
{
  "name": "Panner Thali",
  "id": "1511",
  "desc": "This thali has price only 100 with 4 chpati, i plate rice, 1 sabji, 1 raiyta,1 daal...",
  "items": [
    {
      "name": "Panner with 2 roti and 1 sabji",
      "id": "13931",
      "real_price": "10",
      "description": "This is the testing panner with 2 roti and 1 sabji thali",
      "price": "20.00"
    },{
      "name": "Panner Veg Thali",
      "id": "13930",
      "real_price": "20",
      "description": "This is the testing description..",
      "price": "30.00"
    },{
      "name": "just for test 21",
      "id": "54502",
      "real_price": "0",
      "description": "This is the testing description..",
      "price": "30.00"
    },{
      "name": "just for testing",
      "id": "81742",
      "real_price": "100",
      "description": "This is the testing description..",
      "price": "110.00"
    }
  ]
},{
  "name": "latest cat",
  "id": "1602",
  "desc": "hi",
  "items": [
    {
      "name": "test5",
      "id": "21067",
      "real_price": "0",
      "description": "just test",
      "price": "60.00"
    },{
      "name": "test4",
      "id": "21066",
      "real_price": "0",
      "description": "just test",
      "price": "60.00"
    },{
      "name": "test3",
      "id": "21065",
      "real_price": "0",
      "description": "just test",
      "price": "13.00"
    },{
      "name": "test2",
      "id": "21064",
      "real_price": "0",
      "description": "just test",
      "price": "14.00"
    },{
      "name": "test1",
      "id": "21063",
      "real_price": "0",
      "description": "just test",
      "price": "15.00"
    },{
      "name": "just test",
      "id": "14854",
      "real_price": "50",
      "description": "",
      "price": "60.00"
    },{
      "name": "test6",
      "id": "21072",
      "real_price": "50",
      "description": "test",
      "price": "60.00"
    },{
      "name": "test7",
      "id": "21073",
      "real_price": "50",
      "description": "testt",
      "price": "60.00"
    },{
      "name": "test",
      "id": "81806",
      "real_price": "0",
      "description": "testing",
      "price": "20.00"
    }
  ]
}

Для каждой категории добавьте новое представление карты, в то время как для каждого элемента внутри категории добавьте текстовое представление, содержащее детали этого элемента.

1 Ответ

0 голосов
/ 28 ноября 2018

Для каждой категории вы можете использовать recylerview.В противном случае вы берете дополнительное поле для типа меню.Затем закройте их по типу меню.Затем возьмите два типа макета: один для типа элемента и другой для элемента.Теперь, основываясь на «типе» или «индексе», добавьте раскладку в обзор утилизатора.

Используйте многовидовой Adaper для просмотра утилизатора.Recylerview имеет одну самую мощную особенность многопользовательской рекламы.пример кода, как показано ниже: пакет com.diary.kumud.mydiary;

import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;


import java.util.ArrayList;

/*addapter for dashboard*/
public class MultiViewTypeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private ArrayList<DashBoardModel> dataSet;
    Context mContext;
    int total_types;

    public static class SingleBrickViewHolder extends RecyclerView.ViewHolder {

        TextView titleTxt, descTxt;
        ImageView iconImgView;

        public SingleBrickViewHolder(View itemView) {
            super(itemView);

            this.titleTxt = (TextView) itemView.findViewById(R.id.textView5);
            this.descTxt = (TextView) itemView.findViewById(R.id.textView6);
            this.iconImgView = (ImageView) itemView.findViewById(R.id.imageView5);
        }
    }

    public static class DoubleBrickViewHolder extends RecyclerView.ViewHolder {

        ImageView iconImgView;
        TextView titleTxt;

        public DoubleBrickViewHolder(View itemView) {
            super(itemView);

            this.iconImgView = (ImageView) itemView.findViewById(R.id.imageView5);
            this.titleTxt = (TextView) itemView.findViewById(R.id.textView5);
        }
    }

    public MultiViewTypeAdapter(ArrayList<DashBoardModel> data, Context context) {
        this.dataSet = data;
        this.mContext = context;
        total_types = dataSet.size();
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view;
        switch (viewType) {
            case Model.DOUBLE_BRICK:
                view = LayoutInflater.from(parent.getContext()).inflate(R.layout.smallbricks, parent, false);
                return new DoubleBrickViewHolder(view);
            case Model.SINGLE_BRICK:
                view = LayoutInflater.from(parent.getContext()).inflate(R.layout.bigbrick, parent, false);
                return new SingleBrickViewHolder(view);
        }
        return null;
    }

    @Override
    public int getItemViewType(int position) {

        switch (dataSet.get(position).tilesType) {
            case 0:
                return Model.DOUBLE_BRICK;
            case 1:
                return Model.SINGLE_BRICK;
            default:
                return -1;
        }
    }

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int listPosition) {

        DashBoardModel object = dataSet.get(listPosition);
        if (object != null) {
            switch (object.tilesType) {
                case Model.DOUBLE_BRICK:
                    ((DoubleBrickViewHolder) holder).titleTxt.setText(object.titletext);
                    setImage(mContext,object.imagName,((DoubleBrickViewHolder) holder).iconImgView);
                    break;
                case Model.SINGLE_BRICK:
                    ((SingleBrickViewHolder) holder).titleTxt.setText(object.titletext);
                    ((SingleBrickViewHolder) holder).descTxt.setText(object.descText);
                    setImage(mContext,object.imagName,((SingleBrickViewHolder) holder).iconImgView);
                    break;
            }
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    startMyActivity(dataSet.get(listPosition).actionActivity);
                }
            });
        }
    }

    @Override
    public int getItemCount() {
        return dataSet.size();
    }

    public void setImage(Context ctx, String imgName, ImageView myImgView){
        Resources res = ctx.getResources();
        int resID = res.getIdentifier(imgName , "drawable", ctx.getPackageName());
        Drawable drawable = res.getDrawable(resID );
        myImgView.setImageDrawable(drawable );
    }

    private void startMyActivity(String ActivityName){
        String activityToStart = ActivityName;
        try {
            Class<?> c = Class.forName(activityToStart);
            Intent intent = new Intent(mContext, c);
            mContext.startActivity(intent);
        } catch (ClassNotFoundException ignored) {
            Log.e("no activity","Activity not found");
        }
    }

}
...