как мне заставить imagedownloadservice работать с компонентом multilist в codenameone?

Я создал мультисписок в GUI Designer. Я устанавливаю модель, как показано ниже

   @Override
protected boolean initListModelMultiIssueList(List cmp) {
    fetchIssues(cmp);
    if (issueVector != null ) {
    cmp.setModel(new DefaultListModel(issueVector));
    System.out.println(cmp);
    }
    return true;
}
void fetchIssues( List c){
    //fetch issues based on the searchquery hash
    //first thing is to create the query from the hash
    System.out.println("Starting to fetch results");
    try{
        java.util.List<ServiceRequest> serviceRequests = ServiceRequest.getServiceRequests(formQuery(searchQuery),true);
        //we need to now populate the issueVector
        //with the data
        System.out.println(serviceRequests.toString());
        if (issueVector != null ) {
            issueVector.clear();
        } else {
            issueVector = new Vector();
        } 
        int index = 0;
        for (ServiceRequest serviceRequest : serviceRequests) {
                Hashtable hIssue = new Hashtable();
                hIssue.put("id",serviceRequest.getHref());
                //System.out.println(hIssue); 

                ImageDownloadService.createImageToStorage(serviceRequest.getRequestPictureURL().toString(),
                        c, index, "icon", 
                        "service-icon-"+ index ,null);
                //hIssue.put("icon", serviceRequest.getRequestPictureURL().toString());
                //System.out.println(hIssue);
                //reverse geocode the location
                Double x = new Double(0.0);
                x=new Double(serviceRequest.getRequestLocationLatitude());
                Double y = new Double(serviceRequest.getRequestLocationLongitude());
                String location=reverseGeocode(x, y);
                hIssue.put("location", location);
                //System.out.println(hIssue);
                Service service = serviceRequest.loadService();
                hIssue.put("service", serviceRequest.loadService().getName().toString());
                hIssue.put("reportedOn",serviceRequest.getCreatedAt().toString());
                //System.out.println("Final hIssue" + hIssue.toString());
                issueVector.add(hIssue);
                index=index+1;
                System.out.println(issueVector);
        }

    }catch (Exception e){
        System.out.println("Error loading search results");
        System.out.println(e);
    }
}

Значок в дизайне графического интерфейса с несколькими списками был установлен в соответствующее свойство. ImageDownloadService загружает файлы изображений, но затем не отображается в списке, как ожидалось. Что я делаю неправильно?


person user1622343    schedule 12.03.2013    source источник


Ответы (1)


Возможно, изображение загружается до того, как запись становится доступной. Хотя трудно сказать по коду и без четкого объяснения симптомов.

Сначала вам нужно создать модель и добавить ее в список (в идеале с пустым изображением-заполнителем, чтобы список не «прыгал»). Затем вам нужно перебрать список и вызвать службу загрузки изображений, иначе она может вернуться до того, как данные будут в списке, и завершиться ошибкой! Это может произойти, если изображение уже находится в кеше, поэтому в этом случае, скорее всего, произойдет быстрый сбой.

person Shai Almog    schedule 15.03.2013
comment
OK. Если я вас правильно понял, я должен создать модель и установить ее в список. Так что в моем коде я должен вызывать fetchIssues() после установки модели, а не раньше. Я попытаюсь. - person user1622343; 15.03.2013
comment
Пробовал, но не работает. Понимание таково, что в первую очередь строим список и ставим моделировать и отображать. Затем снова прокрутите список и используйте сервис загрузки изображений для обновления. Требуется, чтобы иконка уже была определена в списке с некоторым значением-заполнителем, которое заменит сервис imagedownload. Я постараюсь быть ясным и посмотреть, смогу ли я достичь. - person user1622343; 15.03.2013
comment
Что именно не работает? Вы запускали его в отладчике? Вы получаете исключение? Вы смотрели в демонстрациях, таких как демонстрация facebook, где это используется? - person Shai Almog; 17.03.2013
comment
Я вижу, что изображение загружено, но его нет в списке. Я снова посмотрю демо на Facebook. - person user1622343; 27.03.2013