视图未按预期删除

时间:2014-09-22 12:34:17

标签: android android-linearlayout

因此,此函数旨在从视图列表中删除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));
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

找出问题所在。 temp(vertUnitsLayout)每个单元包含2个项目,而不是我期望的1个项目。误解了我的伴侣如何构建他的观点。 我需要更多地使用调试器:S


替换:

    temp.removeViewAt(unit);

使用:

    temp.removeViewAt(unit*2);
    temp.removeViewAt(unit*2);