我一直在周围,我已经看到重复的布局示例。我什至尝试了一些但无济于事。大多数都没有提供我在下面要完成的工作的真实表示。我确实遇到了一个似乎可以工作但导致错误的方法,因为我试图将 .add 用于父布局而 android 不喜欢它。我需要动态布局,这样我就可以在每个重复的项目上使用不同的细节,而不会覆盖以前的细节。
下面是重复布局的 XML,它与活动的布局不同,我不同意,如果有更好的方法我想知道。我确定我的结构有点过载,但我现在并不担心。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/shop_item_banner"
android:orientation="horizontal"
android:padding="10dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/ImageView01"
android:layout_width="55dp"
android:layout_height="55dp"
android:background="@drawable/shop_back_missing_image" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.83"
android:orientation="vertical"
android:paddingLeft="5dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/shop_divider_section" />
<Button
android:id="@+id/button2"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:background="@drawable/shop_big_button"
android:text="BUY"
android:typeface="normal" />
</LinearLayout>
</LinearLayout>
下面是更新页面结构的代码。它正在更新一个位于 ScrollView 内的 LinearLayout,以便用户可以滚动项目。我开始缩减我的代码,以便调试我的问题。到目前为止,我只用了一个 while 循环来打印布局三遍。一旦工作正常,但在我让它运行不止一次之后,事情失败并且应用程序强制关闭。我收到一条警告,提示我无法再将项目添加到所选布局。
public class LayoutStream extends AsyncTask<String, String, String>{
String data = null;
LinearLayout layoutList = (LinearLayout)findViewById(R.id.ScrollItem);
protected void onPreExecute(){
}
@Override
protected String doInBackground(String... params) {
return data;
}
protected void onPostExecute(String tpresult){
int run = 5;
View storeitems = getLayoutInflater().inflate(R.layout.shop_item, null);
while (run > 3){
layoutList.addView(storeitems);
run--;
}
}
}
感谢您提供任何帮助,这是一个很大的障碍,我花了很多时间试图弄清楚为什么会这样。
错误代码是之前的。错误是在 postexecute() 期间尝试添加元素时
03-21 21:27:44.245: W/dalvikvm(30172): threadid=1: 线程退出未捕获异常 (group=0x40020ac0) 03-21 21:27:44.255: E/AndroidRuntime(30172): 致命异常: main 03-21 21:27:44.255: E/AndroidRuntime(30172): java.lang.IllegalStateException: 指定的孩子已经有一个父母。您必须首先在孩子的父母上调用 removeView()。03-21 21:27:44.255: E/AndroidRuntime(30172): 在 android.view.ViewGroup.addViewInner(ViewGroup.java:1970) 03-21 21:27:44.255: E/AndroidRuntime(30172): 在 android. view.ViewGroup.addView(ViewGroup.java:1865) 03-21 21:27:44.255: E/AndroidRuntime(30172): 在 android.view.ViewGroup.addView(ViewGroup.java:1822) 03-21 21:27: 44.255: E/AndroidRuntime(30172): 在 android.view.ViewGroup.addView(ViewGroup.java:1802) 03-21 21:27:44.255: E/AndroidRuntime(30172): 在 com.example.myapp.app。
谢谢