Java 向LinearLayout动态添加多个文本视图

Java 向LinearLayout动态添加多个文本视图,java,android,parent-child,illegalstateexception,Java,Android,Parent Child,Illegalstateexception,我在动态添加文本视图时遇到问题。首先,我想通过getRoomList方法从列表中添加租用的房间,然后添加文本为:Free的房间,这些房间位于existingRoomNames数组中,但未租用 public void checkRoomsAndDate() { linearLayout = (LinearLayout) findViewById(R.id.linear1); linearLayout.removeAllViews(); for (Room room : mC

我在动态添加文本视图时遇到问题。首先,我想通过getRoomList方法从列表中添加租用的房间,然后添加文本为:Free的房间,这些房间位于existingRoomNames数组中,但未租用

public void checkRoomsAndDate() {
    linearLayout = (LinearLayout) findViewById(R.id.linear1);
    linearLayout.removeAllViews();
    for (Room room : mCalendarModel.mList.getRoomList()) {
        addHiredRoomToLayout(room);
    }
    addNotHiredRoomsToLayout();
}

public void addHiredRoomToLayout(Room room) {
    textView = new TextView(this);
    textView.setText(room.getParameters());
    linearLayout.addView(textView);
}

public void addNotHiredRoomsToLayout() {
    textView2 = new TextView(this);
    for (String name : Constants.existingRoomNames) {
        boolean contains = false;
        for (Room room : mCalendarModel.mList.getRoomList()) {
            if (room.getName().equals(name)) {
                contains = true;
            }
        }
        if (!contains) {
            textView2.setText(name + ": Free");
            linearLayout.addView(textView2);
        }
    }
}
以下是XML:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="313dp"
    android:layout_height="150dp"
    android:id="@+id/linear1"
    android:layout_gravity="center"></LinearLayout>
最后一行:

linearLayout.addView(textView2);
有什么问题吗?

移动

linearLayout = (LinearLayout) findViewById(R.id.linear1);
linearLayout.removeAllViews(); 
里面

public void addHiredRoomToLayout(Room room) {
    textView = new TextView(this);
    textView.setText(room.getParameters());
    linearLayout.addView(textView);
}
移动

里面

public void addHiredRoomToLayout(Room room) {
    textView = new TextView(this);
    textView.setText(room.getParameters());
    linearLayout.addView(textView);
}

您将再次向布局中添加相同的视图。 将您的函数更改为

public void addNotHiredRoomsToLayout() {

for (String name : Constants.existingRoomNames) {
    textView2 = new TextView(this);
    boolean contains = false;
    for (Room room : mCalendarModel.mList.getRoomList()) {
        if (room.getName().equals(name)) {
            contains = true;
        }
    }
    if (!contains) {
        textView2.setText(name + ": Free");
        linearLayout.addView(textView2);
    }
}
}

您将再次向布局中添加相同的视图。 将您的函数更改为

public void addNotHiredRoomsToLayout() {

for (String name : Constants.existingRoomNames) {
    textView2 = new TextView(this);
    boolean contains = false;
    for (Room room : mCalendarModel.mList.getRoomList()) {
        if (room.getName().equals(name)) {
            contains = true;
        }
    }
    if (!contains) {
        textView2.setText(name + ": Free");
        linearLayout.addView(textView2);
    }
}
}

问题是每次都使用相同的文本视图。 如果要使用多个文本视图,请将循环更改为

for (String name : Constants.existingRoomNames) {
    textView2 = new TextView(this); //create a new TextView that wasn't added to layout yet

    boolean contains = false;
    for (Room room : mCalendarModel.mList.getRoomList()) {
        if (room.getName().equals(name)) {
            contains = true;
        }
    }
    if (!contains) {
        textView2.setText(name + ": Free");
        linearLayout.addView(textView2);
    }
}

问题是每次都使用相同的文本视图。 如果要使用多个文本视图,请将循环更改为

for (String name : Constants.existingRoomNames) {
    textView2 = new TextView(this); //create a new TextView that wasn't added to layout yet

    boolean contains = false;
    for (Room room : mCalendarModel.mList.getRoomList()) {
        if (room.getName().equals(name)) {
            contains = true;
        }
    }
    if (!contains) {
        textView2.setText(name + ": Free");
        linearLayout.addView(textView2);
    }
}

请尝试此->制作一个名为text\u view的xml布局文件:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"/>

请尝试此->制作一个名为text\u view的xml布局文件:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"/>