j2me - есть ли в списке свойство для отслеживания "ключа", идентифицирующего элемент
Как вы обычно имеете дело со списками и тем фактом, что у них нет свойства четко идентифицировать конкретный элемент? Пока что единственное решение, которое я могу придумать, - это поставить ключ, который я использую, в начале, после которого стоит дефис и текст, который отображается на каждом предмете. Таким образом, когда я получаю текст из выбранного элемента, я могу получить ключ для элемента.
Вот как я это делаю, но, безусловно, должно быть лучшее решение, и мне бы очень хотелось, чтобы вы могли поделиться своим опытом в подобных сценариях.
Заранее спасибо.
1 ответ
Изображение выглядит так, будто вы храните все данные, управляемые в вашем приложении, внутри текста элементов стандартного списка.
Лучше иметь отдельный класс для объектов контейнера данных и обзорный экран, полученный из 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()];
}
}