0
因此,此功能旨在从视图列表中删除Unit对象及其相应的视图。然后它检查剩余的单位,如果先前移除的单位是另一个单位的先决条件,则它会递归并移除该单位,依此类推。
单位已从存储中正确移除,并显示在待处理的显示中,但并非所有已移除单位的视图都从“temp”中移除。
编辑:当每个学期最多有一个单元时,该功能完全起作用,但是否则会使其他东西落后。
任何洞察力,你可以提供为什么这是发生的将非常感激。视图不按预期方式移除
void removeLinkedUnits(Unit inUnit)
{
int sem;
for(sem = semesters.size() - 1; sem >= 0; sem--) //iterate through each semester containing units
{
int unit;
for(unit = semesters.get(sem).getUnits().size() - 1; unit >= 0; unit--) //iterate through each unit in a semester
{
String[] pres = semesters.get(sem).getUnit(unit).getPrerequisites();
int i;
boolean toRemove = false;
for(i = 0; i < pres.length; i++) //Compare list of pre-requisites against removed unit.
{
if(pres[i].contains(inUnit.getUnitID()))
{
toRemove = true;
}
}
if(semesters.get(sem).getUnits().get(unit).getCorequisites().contains(inUnit.getUnitID()))
{
toRemove = true;
}
if(toRemove) //Unit relies on previously removed unit
{
Unit unitx = semesters.get(sem).getUnit(unit);
semesters.get(sem).remove(unitx);
LinearLayout temp = vertUnitLayouts.get(sem);
temp.removeViewAt(unit);
scheduledUnits.remove(unitx.getUnitID());
removeLinkedUnits(unitx);
redrawPendingSpinners();
pendingUnits.add(unitx);
LinearLayout pendingLinear = (LinearLayout) findViewById(R.id.pendingLinear);
pendingLinear.addView(makePendingView(unitx));
}
}
}
}
尝试调用requestLayout()或无效()在删除单元对象之后.. – Sripathi 2014-09-22 12:57:57
似乎没有任何效果。 – Grid32 2014-09-22 13:08:20
你能否确认我已经调用了父视图的requestLayout()或invalidate()?并在循环之后调用其中一种方法? – Sripathi 2014-09-22 13:14:01