Android Studio-以编程方式删除表行
我已经从数组列表中动态创建了一个表Android Studio-以编程方式删除表行,android,tablerow,Android,Tablerow,我已经从数组列表中动态创建了一个表 for (int i = 0; i < arrayList.size(); i++) { TextView name = new TextView(this); TextView time = new TextView(this); TableRow row = new TableRow(this); // Set event name and remaining time
for (int i = 0; i < arrayList.size(); i++) {
TextView name = new TextView(this);
TextView time = new TextView(this);
TableRow row = new TableRow(this);
// Set event name and remaining time
name.setText(arrayList.get(i).name);
time.setText("...");
// Add text views to row
row.addView(time, layoutParams);
row.addView(name, layoutParams);
// Add row to table
tableLayout.addView(row, i);
}
for(int i=0;i
现在,如果我想在某个条件下编辑或删除某些行,我必须访问该行,但是如何访问呢
outerloop:
for(int i = 0; i < arrayList.size(); i++ ) {
if(// row's time <= 0 ...) {
tableLayout.removeViewAt(i); // this doesn't seem to work properly
// it removes the wrong rows
}
else {
// ...
break outerloop;
}
}
outerloop:
对于(int i=0;i 如果(//行的时间创建如下表:
ArrayList<TableRow> rows = new ArrayList<>();
for (int i = 0; i < arrayList.size(); i++) {
TextView name = new TextView(this);
TextView time = new TextView(this);
TableRow row = new TableRow(this);
rows.add(row);
// Set event name and remaining time
name.setText(arrayList.get(i).name);
time.setText("...");
// Add text views to row
row.addView(time, layoutParams);
row.addView(name, layoutParams);
// Add row to table
tableLayout.addView(row, i);
}
当您要删除多行时,这可能是您的解决方案:
ArrayList<TableRow> removeRows = new ArrayList<>();
for(int i = 0; i < rows.size(); i++) {
if(....) {
removeRows.add(rows.get(i));
}
}
// now delete those rows
for(TableRow remove : removeRows) {
tableLayout.removeView(row);
rows.remove(remove);
}
ArrayList=newArrayList();
对于(int i=0;i
我希望这对您有用!您也可以将您的行
存储在列表中,并通过该列表访问它们。当您从tableLayout中删除第一行时,第二行将成为第一行(索引将更改).@JineshFrancis Ohhh我明白了!!我不知道!你有什么解决办法吗?@VladMatvienko我也会试试你的建议!太棒了!按你的要求解决了!还有,行。删除(I)
可能不需要?因为它似乎也会使行的删除变得混乱。如果以后不添加任何行,则不需要它。是吗?@AppPhil否,我先添加行,然后删除行(如果条件满足),这些操作只执行一次,因此我想不需要!谢谢!
ArrayList<TableRow> removeRows = new ArrayList<>();
for(int i = 0; i < rows.size(); i++) {
if(....) {
removeRows.add(rows.get(i));
}
}
// now delete those rows
for(TableRow remove : removeRows) {
tableLayout.removeView(row);
rows.remove(remove);
}