Задать вопрос
@Neonoviiwolf
Flutter developer

Восстановление контента в CardView после поворота?

Доброго!
Создаются карточки, в них добавляются LinearLayout, в LinearLayout присутствует свой контент. При повороте устройства карточки пересоздаются естественно, я пытаюсь в новые карточки добавить ранее созданные LinearLayout, дабы восстановить содержимое. Соответственно нарываюсь на ошибку, что LinearLayout уже имеет родителя. Где и как можно в адаптере удалить ссылку на старые карточки или как это правильнее реализовать?
@Override
    public void onBindViewHolder(FineFoodHolder holder, int position) {

        if (AddItemMenu.getInstance().getLayoutArrayList().size() != data.size()) {
            holder.layout = new LinearLayout(holder.cardView.getContext());
            holder.layout.setId(position);
            AddItemMenu.getInstance().addCardItem(position);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.MATCH_PARENT);
            holder.layout.setOrientation(LinearLayout.VERTICAL);
            holder.layout.setLayoutParams(params);
            holder.cardView.addView(holder.layout);

            View viewPlus = new ItemPlus().onCreateView((LayoutInflater) holder.layout.getContext().
                    getSystemService(Context.LAYOUT_INFLATER_SERVICE), holder.layout, new Bundle());
            holder.layout.addView(viewPlus);

            AddItemMenu.getInstance().getLayoutArrayList().add(holder.layout); //отдельный класс синглтон, в котором храню ArrayList<LinearLayout>
        } else {
            holder.cardView.addView(AddItemMenu.getInstance().getLayoutArrayList().get(position));//тут пытаюсь заполнить новые карточки данными
        }
    }

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

    public static class FineFoodHolder extends RecyclerView.ViewHolder {

        protected View view;
        private CardView cardView;
        private LinearLayout layout;

        public FineFoodHolder(final View itemView) {
            super(itemView);
            cardView = (CardView) itemView.findViewById(R.id.card_view);

        }
    }


хотя наверно ещё if (AddItemMenu.getInstance().getLayoutArrayList().size() != data.size()) будет косячить на карточках, которые не умещаются на экран, но проблема не в ней. Как можно проверить, существует ли данный индекс в массиве bли ток try-catch? Ведь карточки создаются по мере их выведения на экран, соответсвено, если я только слежу за и количеством layout, то будет неправильно работать, если список длинный и не умещается весь на экран, то просмотрев половину и вернувшись к верхней карточке, пересоздаются верхние карточки и в месте с ними layout - ты
  • Вопрос задан
  • 167 просмотров
Подписаться 1 Оценить 4 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

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