title: issue: The specified child already has a parent. You must call removeView() on the child's parent first
body: <p>Iam developing app to add dynamic data to multiple table views.The structure is as follows.</p>
  
  <p><img src="https://i.stack.imgur.com/nECe1.png" alt="enter image description here">
  My code in onPostExecute is :</p>
  
  <pre><code>    protected void onPostExecute(List&lt;String&gt; results){
  int ind,i = 0;
  ScrollView sv=null;
  TableLayout tl=null;
  TableRow tr = null;
  int mjsonlength=results.size();
  if(results!=null){
  
   TableLayout indextl=(TableLayout)findViewById(R.id.indextablelayout);
      TableRow indextr=new TableRow(SubProducts.this);
      //indext1.moveToFirst();
      LinearLayout llt=(LinearLayout)findViewById(R.id.alltablell);
      //for(int f=0;f&lt;mjsonlength;f++){
  
          for( ind=0;ind&lt;indextitle.size();ind++)
          {
  
              TextView indextv=new TextView(SubProducts.this);
              indextv.setBackgroundResource(R.drawable.greenbg);
              indextv.setHeight(25);
              indextv.setWidth(50);
              indextv.setId(6);
              indextv.setTextColor(Color.WHITE);
              indextv.setText(indextitle.get(ind));
              indextv.setPadding(20,10,6,3);
              indextr.addView(indextv);
  
              indextl.addView(indextr,6);
  
              sv=new ScrollView(SubProducts.this);
               tl=new TableLayout(SubProducts.this);
               for( i=0;i&lt;mjsonlength;i++){
                      tr=new TableRow(SubProducts.this);
  
                      if(ind==i)  {
  
                          RelativeLayout rl=new RelativeLayout(SubProducts.this);
                          Resources res = getResources(); //resource handle
                            rl.setBackgroundResource(R.drawable.prd_box);
  
                           RelativeLayout.LayoutParams newParams1 = new RelativeLayout.LayoutParams(
                                      RelativeLayout.LayoutParams.WRAP_CONTENT,
                                      RelativeLayout.LayoutParams.WRAP_CONTENT);
  
                              image=new ImageView(SubProducts.this);
                              image.setLayoutParams(newParams1);
                              image.setId(1);
                              image.setImageBitmap(bmp);
                              image.setPadding(5, 20, 5, 5);
                              rl.addView(image,1);
  
  
  
                            RelativeLayout.LayoutParams lprams = new RelativeLayout.LayoutParams(
                                      RelativeLayout.LayoutParams.WRAP_CONTENT,
                                      RelativeLayout.LayoutParams.WRAP_CONTENT);
                              lprams.addRule(RelativeLayout.RIGHT_OF, 1);
  
                            TextView tv1=new TextView(SubProducts.this);
                          Spanned marked_up = Html.fromHtml(description.get(i));
                          tv1.setText((marked_up.toString()).substring(1, 170).replaceAll("&amp;nbsp;",""));
                          tv1.setLayoutParams(lprams);
                          tv1.setId(2);
                          tv1.setHeight(150);
                          tv1.setWidth(130);
                          tv1.setPadding(20, 10, 0, 10);
                          rl.addView(tv1,2);
  
  
                           RelativeLayout.LayoutParams newParams = new RelativeLayout.LayoutParams(
                                      RelativeLayout.LayoutParams.WRAP_CONTENT,
                                      RelativeLayout.LayoutParams.WRAP_CONTENT);
                           newParams.addRule(RelativeLayout.BELOW, 2);
                          TextView tv=new TextView(SubProducts.this);
                          tv.setText(productname.get(i));
                          tv.setLayoutParams(newParams);
                          tv.setTextColor(Color.WHITE);
                          tv.setId(3);
                          tv.setPadding(10, 0, 0, 10);
                          rl.addView(tv,3);
  
  
                          tr.addView(rl);
                          tr.setPadding(5, 10, 5, 10);
  
  
                      }
                      tl.addView(tr);
  
              }
  
               sv.addView(tl);
  
                  llt.addView(sv);
  
          }
  
      }
  </code></pre>
  
  <p>}</p>
  
  <p>Iam getting error as follows:</p>
  
  <pre><code>     03-16 06:27:07.452: E/AndroidRuntime(7233): FATAL EXCEPTION: main
        03-16 06:27:07.452: E/AndroidRuntime(7233): java.lang.IllegalStateException: The 03-16 06:27:07.452: E/AndroidRuntime(7233): FATAL EXCEPTION: main
  03-16 06:27:07.452: E/AndroidRuntime(7233): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.view.ViewGroup.addViewInner(ViewGroup.java:3339)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.view.ViewGroup.addView(ViewGroup.java:3210)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.widget.TableLayout.addView(TableLayout.java:429)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.view.ViewGroup.addView(ViewGroup.java:3155)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.widget.TableLayout.addView(TableLayout.java:411)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.view.ViewGroup.addView(ViewGroup.java:3131)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.widget.TableLayout.addView(TableLayout.java:402)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at com.example.nutritionplusapp.SubProducts$LongRunningGetIO1.onPostExecute(SubProducts.java:227)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at com.example.nutritionplusapp.SubProducts$LongRunningGetIO1.onPostExecute(SubProducts.java:1)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.os.AsyncTask.finish(AsyncTask.java:631)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.os.Handler.dispatchMessage(Handler.java:99)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.os.Looper.loop(Looper.java:137)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at android.app.ActivityThread.main(ActivityThread.java:5041)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at java.lang.reflect.Method.invokeNative(Native Method)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at java.lang.reflect.Method.invoke(Method.java:511)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
  03-16 06:27:07.452: E/AndroidRuntime(7233):     at dalvik.system.NativeStart.main(Native Method)
  03-16 06:32:07.586: I/Process(7233): Sending signal. PID: 7233 SIG: 9
  03-16 06:32:08.522: E/Trace(7355): error opening trace file: No such file or directory (2)
  </code></pre>
  
  <p>The loop variable value should be same  for both loops Inorder get subproducts of respective product.Iam fighting with the above error.Anybody having idea.Plz suggest me with proper solution.Thanks in Advance.</p>
  
  <p>EDIT:</p>
  
  <pre><code>ArrayList&lt;String&gt; productname=new ArrayList&lt;String&gt;();
  ArrayList&lt;String&gt; description=new ArrayList&lt;String&gt;();
  ArrayList&lt;String&gt; indextitle=new ArrayList&lt;String&gt;();
   ArrayList&lt;String&gt; mStrings = new ArrayList&lt;String&gt;();
  </code></pre>
  
  <p>under doINBackground:</p>
  
  <pre><code> JSONObject json = array.getJSONObject(i);
  
       manJson = json.getJSONObject("product");
       mStrings.add(manJson.getString("productimage"));
       productname.add(manJson.getString("productname"));
      indextitle.add(manJson.getString("subcategoryid"));
      description.add(manJson.getString("description"));
  </code></pre>