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()];
    }
}
Другие вопросы по тегам