2011-11-28 159 views
0

我是黑莓发展的新手。我想知道是否有任何其他方式来解决我的申请。我已经开发了显示是一个简单的计算器应用程序,是否可以将2个参数传递给listfieldcallback类?

value1 : 6 
value2 : 3 
Calculate 

+ : 9 
- : 3 
* : 18 
/: 2 

其中值1和值2是两个编辑字段,计算是ButonField。在我的代码中,我写了一个字符串数组{“+”,“ - ”,“*”,“/”},用于传递给实现ListFieldCallBack的类。

它是编码像

for(int i = 0; i<array.length;i++) 
     { 
      mylist.insert(i); 
        //calculated the result 
      myCallBack.insert(array[i]+"#"+result); 
     } 

在我drawListRow我已经分隔的数组值和结果。并以两种文字显示。

它运作良好。现在我的问题是,是否有任何其他方式,我可以传递数组中的值和计算结果?现在我将数组值和结果作为一个字符串传递并将其拆分以显示我的结果。但如果可以分别传递参数,我不需要在那里使用splitter函数。那么这是怎么回事?或者还有其他方法吗? PLZ建议

回答

3

嗯,这与黑莓无关。这与我们在面向对象代码中使用的习惯用法有关。

由于您的列表项目代表2个信息 - 一个数学运算和结果 - 你需要创建一个封装的2件信息的列表项的模型:

public class ListItem { 

    public final String operation; 
    public final String result; 

    public ListItem(String operation, String result) { 
     this.operation = operation; 
     this.result = result; 
    } 
} 

然后内部ListFieldCallBack你应该有VectorListItem实例。因此,当您拨打myCallBack.insert(new ListItem(operation, result));时,它会将列表项添加到向量中。

当您在drawListRow(ListField listField, Graphics graphics, int index, int y, int width)中时,首先按索引获取列表项,然后您可以轻松获取列表项状态,而无需拆分字符串或执行任何其他脏操作。所以代码变得干净,并且OOP-ish:

ListItem li = // get ListItem by index 

li.operation; // operation 
li.result; // result 
+0

+1给出详细的答案... – BBdev

+0

@Arhimed: - 谢谢Arhimed。其实我已经尝试过了。但是在ListFieldCallBack的插入函数中,我犯了错误。乌尔的指导真的帮助了我。非常感谢 –

相关问题