MultiList不显示来自webservice的所有结果(Codename One)

时间:2017-06-30 02:46:36

标签: java codenameone

我试图使用MultiList显示一些json记录。我按照这里所做的https://www.codenameone.com/manual/graphics.html进行了操作,但是我只返回了一条记录(请参阅此image)。答案来自此webservice

以下是我的代码。请告诉我我错在哪里。

@Override
    protected void beforeFormA(Form f) {        
         Style s = UIManager.getInstance().getComponentStyle("Button");
         FontImage p = FontImage.createMaterial(FontImage.MATERIAL_PORTRAIT, s);
         EncodedImage placeholder = EncodedImage.createFromImage(p.scaled(p.getWidth() * 3, p.getHeight() * 4), false);
         getattractive();//fetch results from webservice and store inside response variable
         ArrayList arr = (ArrayList) response.get("results");                
                for (Object m:arr){                   
                Map ma = (Map)m;                        
                address =(String) ma.get("formatted_address");
                name=(String)ma.get("name");
                icon=(String)ma.get("icon");
         ArrayList<Map<String, Object>> data = new ArrayList<>(); 
         data.add(createListEntry(name,address,icon));                                      
        DefaultListModel<Map<String, Object>> model = new DefaultListModel<>(data);
        MultiList ml = new MultiList(model);
        ml.getUnselectedButton().setIconName("icon_URLImage");
        ml.getSelectedButton().setIconName("icon_URLImage");
        ml.getUnselectedButton().setIcon(placeholder);
        ml.getSelectedButton().setIcon(placeholder);
        f.add(BorderLayout.CENTER, ml);          
      }                    
   }    


private Map<String, Object> createListEntry(String name, String addr, String coverURL) {
    Map<String, Object> entry = new HashMap<>();    
    entry.put("Line1", name);
    entry.put("Line2", addr);
    entry.put("icon_URLImage", coverURL);
    entry.put("icon_URLImageName", name);
    return entry;

2 个答案:

答案 0 :(得分:1)

你应该修复缩进。 for循环封装了所有内容,因此您循环遍历所有元素,而对于要添加X多列表的X元素。

如果您使用调试器跳过代码,这会立即看到...

答案 1 :(得分:0)

完成。我将下面的行移出方法并将其放在课程中。

的ArrayList&GT; data = new ArrayList&lt;&gt;();