0
이 함수는 Unit 개체와 해당 뷰를 뷰 목록에서 제거하기위한 것입니다. 그런 다음 나머지 유닛을 검사하고 이전에 제거 된 유닛이 다른 유닛의 전제 조건 이었으면 해당 유닛을 되풀이하고 제거합니다.
유닛이 스토리지에서 올바르게 제거되고 보류중인 디스플레이에 다시 표시되지만 제거 된 유닛의 모든보기가 "임시"에서 제거되지는 않습니다.
편집 :이 기능은 각 학기에 최대 한 개의 단위가있을 때 완전히 작동하지만 그렇지 않은 경우는 남겨 둡니다.
왜 이런 일이 발생했는지 알 수있는 통찰력이 있으면 대단히 감사하겠습니다.예상대로 제거되지 않는 뷰
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
어느 쪽도 효과가없는 것으로 보입니다. – Grid32
부모보기의 requestLayout() 또는 invalidate()를 호출했음을 확인할 수 있습니까? 그리고 루프 이후에 이러한 메소드 중 하나를 호출 했습니까? – Sripathi