为什么列表的最后一行会被删除?

时间:2012-06-18 10:12:29

标签: blackberry datagrid java-me

我正在开发一款预定目标OS5 +的黑莓应用。

我正在创建一个GridFieldManager来显示从Web服务获取的数据。第二列数据通常是多行的,因此我将行设置为比标准更高的高度。这是我的GridFieldManager的代码:

//Creation and property settings

GridFieldManager myGrid = new GridFieldManager(myScreenData.getSpese().size(), 3, GridFieldManager.USE_ALL_WIDTH|GridFieldManager.VERTICAL_SCROLL);
        myGrid.setColumnProperty(0,GridFieldManager.AUTO_SIZE, Display.getWidth()/3);
        myGrid.setColumnProperty(1,GridFieldManager.AUTO_SIZE, Display.getWidth()/3);  

        myGrid.setColumnProperty(2,GridFieldManager.AUTO_SIZE, Display.getWidth()/3);
        myGrid.setRowPadding(3);
        myGrid.setMargin(3,0,3,0);
        for(int i=1;i<myScreenData.getSpese().size()-1;i++){
            myGrid.setRowProperty(i, GridFieldManager.FIXED_SIZE, getFont().getHeight()*3);
        }

//title population
        myGrid.insert(new LabelField("DATA"), 0,FIELD_LEFT);
        myGrid.insert(new LabelField("CAUSALE"), 1,FIELD_LEFT);
        myGrid.insert(new LabelField("IMPORTO"), 2,FIELD_LEFT);
//Data population       
        for (int i=0;i<myScreenData.getSpese().size()-1;i++){
            System.out.println("aggiungo "+i+" di "+(myScreenData.getSpese().size()-1));
            SpesaDateAsString mySpesa = (SpesaDateAsString)myScreenData.getSpese().elementAt(i);
            myGrid.insert(new LabelField(mySpesa.getData(),LabelField.FIELD_LEFT|LabelField.FOCUSABLE),0+((i+1)*3),FIELD_LEFT);
            myGrid.insert(new LabelField(mySpesa.getCausale(),LabelField.FIELD_LEFT|LabelField.FIELD_VCENTER),1+((i+1)*3),FIELD_LEFT);
            myGrid.insert(new LabelField(mySpesa.getImporto(),LabelField.FIELD_LEFT),2+((i+1)*3),FIELD_LEFT);


        }
        System.out.println("aggiungo la tabella");
        result.add(myGrid);

这里的问题是列表的最后一行被删除。这是截图:

blackberry storm simulator screenshot

有谁知道该怎么办?为什么会这样?

我已经为行属性(FIXED,AUTO,PREFERRED ... ETC)以及填充和边距的每种可能组合尝试了所有可能的参数组合。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我认为问题出在这一行:

for (int i=0;i<myScreenData.getSpese().size()-1;i++){

为什么您的限制为myScreenData.getSpese().size()-1且测试严格为<? 要么使用更少或相等的运算符,要么限制应为myScreenData.getSpese().size()