Я думаю, что проблема вызвана тем, как вы готовите макеты в prepareThemes()
.
Вы не упомянули, но я предполагаю, что ваш 'layout / widget_configure.xml' определяет такую структуру:?
<LinearLayout android:id="@+id/root">
<LinearLayout android:id="@+id/themeLayout> <!-- ... --> </LinearLayout>
<LinearLayout android:id="@+id/colorLayout> <!-- ... --> </LinearLayout>
<LinearLayout android:id="@+id/transpLayout> <!-- ... --> </LinearLayout>
</LinearLayout>
Затем вы увеличиваете это в prepareThemes()
, чтобы получить 3 суб-макета. Но на данный момент они уже зарегистрированы как дочерние элементы окружающего макета (который я назвал «root»). Поскольку ошибка подразумевает, что экземпляр представления может быть добавлен только к одному родителю .
Вы можете сохранить каждый LinearLayout в своем собственном XML-файле, а затем увеличить его 3 раза. Затем эти сохраненные макеты можно добавить ровно один раз для потомка.
Я не уверен, что вы хотите сделать, но я думаю, было бы лучше - вместо подготовки - просто иметь 3 различных макета, которые включают деталь из layout.itemrow
, а затем просто сделать switch case
в getChildView()
и накачайте нужный макет на лету. Потому что даже когда вы сохраняете макет без привязки в prepareThemes: как только у вас будет более одной группы, вы получите ту же ошибку при добавлении предварительно созданного макета к дочернему элементу группы snd.
Надеюсь, это поможет.