繁体   English   中英

如何从TableLayout删除行?

[英]How Do I Delete Rows From TableLayout?

我是android开发的菜鸟,我无法从ViewLayoutr中用一行实例化的TableLayout删除行。 当用户单击按钮时,将添加12行。 然后,当用户再次单击该按钮时,应删除这12行,并应添加另一组行。 但是,每当我尝试从TableLayout中删除行时,只会删除奇数行,而不是所有行。 任何解决此问题的帮助将不胜感激。

ViewPager(实例化布局)

 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);
        }

在你的循环中

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

删除子级为0的子代后,索引为1的子代变为0,并且循环继续到uindex为1,因此将其保留在那里。

而是这样做

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM