Как добавить и сложить childView в LinearLayout? - PullRequest
0 голосов
/ 04 марта 2019

Я получил The specified child already has a parent. You must call removeView() on the child's parent first. ОШИБКА.

Но я не хочу удалять родительское представление.

Если вы нажмете кнопку, сообщение должно быть добавлено в конце дочерних представлений LinearLayout.

Это мой код Java:

    Button addBTN = findViewById(R.id.addButton);
    LinearLayout messageListLL = findViewById(R.id.messageList_LinearLayout);
    addBTN.setOnClickListener((v) -> {
        MessageItem messageItem = new MessageItem();
        View messageView = View.inflate(this, R.layout.item_message, messageListLL);
        messageListLL.addView(messageView, messageListLL.getChildCount());
    });

Это часть XML-кода активности:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@id/adView"
    android:layout_below="@id/userContainer"
    android:background="#CCC"
    android:padding="15dp">

    <LinearLayout
        android:id="@+id/messageList_LinearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <Button
            android:id="@+id/addButton"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:backgroundTint="@color/design_default_color_primary"
            android:text="ADD"
            android:textColor="@android:color/white" />
    </LinearLayout>
</ScrollView>

Это item_message.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:orientation="vertical">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="left" />

    <EditText
        android:layout_width="300dp"
        android:layout_height="wrap_content" />

    <ImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_gravity="right"
        android:background="#FFD9D9" />
</LinearLayout>

Итак, я хотел бы сделать представление с item_message и поместить его в LinearLayout в xml действия, который имеет messageList_LinearLayout для атрибута id.

Кнопка также находится в LinearLayout.Кнопка должна быть расположена в конце LinearLayout.

И всякий раз, когда я нажимаю кнопку, необходимо создать представление сообщения и добавить его в конец списка сообщений, а также перед кнопкой.

1 Ответ

0 голосов
/ 04 марта 2019

Вы можете просто изменить третий параметр на null.

View messageView = getLayoutInflater().inflate(this, R.layout.item_message, null);
messageListLL.addView(messageView, messageListLL.getChildCount() - 1)

Третий параметр определяет его root представление.Вы можете раздувать messageView без каких-либо корней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...