我是Android开发的菜鸟,我无法从TableLay中删除行,这是在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);
}
答案 0 :(得分:1)
在你的循环中
for (int i = 0; i < remedyTable.getChildCount(); i++) {
在0处删除子项后,索引1处的子项变为0,并且您的循环继续执行uindex,因此它只是将其保留在那里。
而是这样做
while (view.getChildCount() > 0) {
view.removeChildAt(0);
}