您通常如何处理列表以及它们没有明确标识特定项目的属性这一事实? 到目前为止,我能想到的唯一解决方案是将我使用的 key 放在开头,后跟连字符和每个项目上显示的文本。 这样,当我从所选项目中检索文本时,我可以获得该项目的 key 。
这就是我的做法,但肯定有更好的解决方案,我真的很希望您能分享您在这种情况下的经验。
提前致谢。
请您参考如下方法:
这张图看起来就像您将应用程序中管理的所有数据保存在标准列表项目的文本中。
最好为数据容器对象提供一个单独的类,并从 List
派生一个概览屏幕,该屏幕采用这些容器对象的数组并从中实例化 Items
。然后这个屏幕可以提供一个方法
DataContainer getSelectedObject()
它在内部使用 getSelectedIndex() 来查找对象。
更具体地说(Overview.java)
package mvc.midlet;
import javax.microedition.lcdui.List;
public class Overview extends List {
private final DomainObject[] data;
public static Overview create(DomainObject[] data) {
int i = 0;
for(; i < data.length; i++) {
if(data[i] == null) break;
}
String[] names = new String[i];
for(int j = 0; j < i; j++) {
names[j] = data[j].name;
}
return new Overview(names, data);
}
protected Overview(String names[], DomainObject[] data) {
super("Overview", IMPLICIT, names, null);
this.data = data;
}
public DomainObject getSelectedObject() {
return data[this.getSelectedIndex()];
}
}