![](/img/trans.png)
[英]Dynamically creating WebViews and TextViews in a LinearLayout only whenever adding one
[英]Adding multiple TextViews into LinearLayout dynamically
我在動態添加TextViews時遇到問題。 我想首先通過方法getRoomList()
從列表中添加租用的房間,然后再添加帶有文本“:Free”的房間,這些房間位於existingRoomNames
getRoomList()
數組中但未被租用。
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內部。
我得到這樣的異常:
`java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.`
在最后一行:
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);
}
}
}
移動
linearLayout = (LinearLayout) findViewById(R.id.linear1);
linearLayout.removeAllViews();
內
public void addHiredRoomToLayout(Room room) {
textView = new TextView(this);
textView.setText(room.getParameters());
linearLayout.addView(textView);
}
問題是您每次都使用相同的TextView。 如果要使用多個TextView,則將循環更改為
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_view”的xml布局文件:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
然后行來解決這個問題:
textView2 = (TextView) getLayoutInflater().inflate(R.layout.text_view, null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.