我试图使用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;
答案 0 :(得分:1)
你应该修复缩进。 for循环封装了所有内容,因此您循环遍历所有元素,而对于要添加X多列表的X元素。
如果您使用调试器跳过代码,这会立即看到...
答案 1 :(得分:0)
完成。我将下面的行移出方法并将其放在课程中。
的ArrayList&GT; data = new ArrayList&lt;&gt;();