0

我是 android 开发的菜鸟,我无法从 TableLayout 中删除行,该 TableLayout 是用 viewpager 中的一行实例化的。当用户单击一个按钮时,将添加 12 多行。然后,当用户再次单击该按钮时,应删除这 12 行并添加另一组行。但是,每当我尝试从 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);
        }
4

1 回答 1

1

在你的循环中

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

删除 0 处的子项后,索引 1 处的子项变为 0,并且您的循环继续到 uindex 1,因此它只是将其留在那里。

而是这样做

while (view.getChildCount() > 0) {
  view.removeChildAt(0);
}
于 2013-05-26T16:54:16.427 回答