2013-05-26 46 views
0

我是android开发的小菜鸟,我无法从TableLayout中删除行,该行使用viewpager中的一行实例化。当用户点击一个按钮时,会添加更多行。然后,当用户再次单击该按钮时,应删除这12行,并添加另一组行。但是,每当我尝试删除TableLayout中的行时,只会删除奇数行而不是所有行。任何帮助解决这个问题都非常感谢。如何从TableLayout删除行?

ViewPager(其中tablelayout实例化)

case 2: 
       resId = R.layout.suggestedremedy_layout;  
       view = inflater.inflate(resId, null); 
       remedyDescription = (TextView)view.findViewById(R.id.remedy_description); 
       remedyCause = (TextView)view.findViewById(R.id.remedy_cause); 
       remedyHerbs = (TextView)view.findViewById(R.id.remedy_herbs); 
       remedyFoods = (TextView)view.findViewById(R.id.remedy_foods); 
       remedyTable = (TableLayout)view.findViewById(R.id.remedy_table); 

       TableRow titleRow = new TableRow(RemedyActivity.this); 
       TextView titleSupplement = new TextView(RemedyActivity.this); 
       TextView titleDosage = new TextView(RemedyActivity.this); 
       TextView titleComment = new TextView(RemedyActivity.this); 
       titleSupplement.setText("Supplement"); 
       titleDosage.setText("Dosage"); 
       titleComment.setText("Comment"); 
       titleSupplement.setGravity(Gravity.CENTER); 
       titleDosage.setGravity(Gravity.CENTER); 
       titleComment.setGravity(Gravity.CENTER); 
       titleRow.addView(titleSupplement); 
       titleRow.addView(titleDosage); 
       titleRow.addView(titleComment); 
       remedyTable.addView(titleRow);       

       ((ViewPager) collection).addView(view, 0); 
       return view; 

按钮点击(其中标题行之后的行删除,新行增加)

 //Updating Table 
     if(remedyTable.getChildCount()>0){ 
      for (int i = 0; i < remedyTable.getChildCount(); i++) { 
       if(i>0){ 
        remedyTable.removeViewAt(i); //Only removing odd rows, instead off all rows. Why? 
       } 
      } 
     } 

     remedyItemsSupplements = new ArrayList<String>(); 
     remedyItemsDosage = new ArrayList<String>(); 
     remedyItemsComments = new ArrayList<String>(); 

     remedyDescription.setText(R.string.acne_description); 
     remedyCause.setText(R.string.acne_cause); 
     remedyHerbs.setText(R.string.acne_herbs); 
     remedyFoods.setText(R.string.acne_foods); 

     remedyListSupplements = res.getStringArray(R.array.acne_supplements); 
     remedyListDosage = res.getStringArray(R.array.acne_dosage); 
     remedyListComments = res.getStringArray(R.array.acne_comment); 
     Collections.addAll(remedyItemsSupplements, remedyListSupplements); 
     Collections.addAll(remedyItemsDosage, remedyListDosage); 
     Collections.addAll(remedyItemsComments, remedyListComments);      

     for (int i = 0; i < remedyItemsSupplements.size(); i++) { 
      TableRow remedyRow = new TableRow(RemedyActivity.this); 
      TextView remedySupplement = new TextView(RemedyActivity.this); 
      TextView remedyDosage = new TextView(RemedyActivity.this); 
      TextView remedyComment = new TextView(RemedyActivity.this); 

      remedySupplement.setText(remedyItemsSupplements.get(i)); 
      remedyDosage.setText(remedyItemsDosage.get(i)); 
      remedyComment.setText(remedyItemsComments.get(i)); 
      remedySupplement.setBackgroundResource(R.drawable.table_background); 
      remedyDosage.setBackgroundResource(R.drawable.table_background); 
      remedyComment.setBackgroundResource(R.drawable.table_background); 
      remedySupplement.setHeight(80); 
      remedySupplement.setWidth(500); 
      remedyDosage.setHeight(80); 
      remedyComment.setHeight(80); 

      remedyRow.addView(remedySupplement); 
      remedyRow.addView(remedyDosage); 
      remedyRow.addView(remedyComment); 
      remedyTable.addView(remedyRow); 
     } 

回答

1

在你的循环

for (int i = 0; i < remedyTable.getChildCount(); i++) { 

后你在0处删除孩子,在索引1处的孩子变为0,并且你的循环继续到uindex 1,所以它只是起作用在那里。

而是做到这一点

while (view.getChildCount() > 0) { 
    view.removeChildAt(0); 
}