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