pvpered
@pvpered

Как заставить работать ConstraintSet?

Из справочника бд вытаскиваю инфу по блюдам и в цикле создаю view
ArrayList<Food> Foods = dbHelper.getFoods(spinner.getSelectedItemPosition());
        DynViewCount = 6 * Foods.size();
        int indexView = R.id.textView2;
        Map<Integer, Integer> FoodDate = dbHelper.getFoodDate();

        for (Food food : Foods){
            TextView Name = new TextView(this);
            TextView Kkal = new TextView(this);
            TextView Ing = new TextView(this);
            TextView PFC = new TextView(this);
            ImageView Photo = new ImageView(this);
            EditText Eaten = new EditText(this);
            ConstraintLayout.LayoutParams CL = new ConstraintLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

            Name.setText(food.getName());
            Name.setTag(food.getId());
            Name.setId(index++);
            CL.topToBottom = indexView;
            CL.topMargin = 20;
            CL.leftMargin = 20;
            CL.leftToLeft = R.id.activityFood;
            mainL.addView(Name, CL);


            Kkal.setText(String.valueOf(food.getKkal()));
            Kkal.setId(index++);
            CL.topToBottom = Name.getId();
            mainL.addView(Kkal, CL);


            Ing.setText(food.getIng());
            Ing.setId(index++);
            CL.topToBottom = Kkal.getId();
            mainL.addView(Ing, CL);


            PFC.setText(food.getPFC());
            PFC.setId(index++);
            CL.topToBottom = Ing.getId();
            mainL.addView(PFC, CL);


            Eaten.setId(index++);
            CL.topToBottom = PFC.getId();
            if(FoodDate.containsKey(food.getId()))
                Eaten.setText(FoodDate.get(food.getId()).toString());
            mainL.addView(Eaten, CL);
            indexView = Eaten.getId();


            Photo.setImageBitmap(food.getPhoto());
            Photo.setId(index++);
            CL.topToTop = Name.getId();
            CL.leftToRight = Eaten.getId();
            CL.topMargin = 0;
            mainL.addView(Photo, CL);

            ConstraintSet set = new ConstraintSet();
            set.clone(mainL);
            set.constrainHeight(Name.getId(), ConstraintSet.WRAP_CONTENT);
            set.constrainWidth(Name.getId(), ConstraintSet.WRAP_CONTENT);
            set.constrainHeight(Kkal.getId(), ConstraintSet.WRAP_CONTENT);
            set.constrainWidth(Kkal.getId(), ConstraintSet.WRAP_CONTENT);
            set.connect(Name.getId(), ConstraintSet.TOP, indexView, ConstraintSet.BOTTOM, 20);
            set.connect(Name.getId(), ConstraintSet.LEFT, R.id.activityFood, ConstraintSet.LEFT, 20);
            set.connect(Kkal.getId(), ConstraintSet.TOP, Name.getId(), ConstraintSet.BOTTOM, 20);
            set.connect(Kkal.getId(), ConstraintSet.LEFT, R.id.activityFood, ConstraintSet.LEFT, 20);
            set.connect(Ing.getId(), ConstraintSet.TOP, Kkal.getId(), ConstraintSet.BOTTOM, 20);
            set.connect(Ing.getId(), ConstraintSet.LEFT, R.id.activityFood, ConstraintSet.LEFT, 20);
            set.connect(PFC.getId(), ConstraintSet.TOP, Ing.getId(), ConstraintSet.BOTTOM, 20);
            set.connect(PFC.getId(), ConstraintSet.LEFT, R.id.activityFood, ConstraintSet.LEFT, 20);
            set.connect(Eaten.getId(), ConstraintSet.TOP, PFC.getId(), ConstraintSet.BOTTOM, 20);
            set.connect(Eaten.getId(), ConstraintSet.LEFT, R.id.activityFood, ConstraintSet.LEFT, 20);
            set.connect(Photo.getId(), ConstraintSet.TOP, Name.getId(), ConstraintSet.TOP, 20);
            set.connect(Photo.getId(), ConstraintSet.LEFT, Eaten.getId(), ConstraintSet.RIGHT, 20);

            set.applyTo(mainL);


        }

Однако все равно все view кучкуются в верхнем левом углу. Как сделать по уму?
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Ууух!
По уму использовать RecyclerView, а не велосипедить вот такое.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы