2016-02-27 72 views
1

我拿了一個空白容器並添加ImageViewer & Spanlabel。同樣是在列表中呈現,但它顯示我默認輸出(我把它放在測試)。我嘗試雙向動態和手動仍然輸出是相同的。即使我嘗試使用多列表,但它不採用渲染器。圖像和spanlabel渲染列表中的默認輸出[CodenameOne]

這裏是我的代碼:

ArrayList<Map<String, Object>> a = new ArrayList<Map<String, Object>>(); 
    HashMap<String, Object> m = new HashMap<String, Object>(); 
    Image image=fetchResourceFile().getImage("puzzle_icon.png"); 
    m.put("gSR_image", image); 
    m.put("gSR_label", "Puzzle"); 
    a.add(m); 
    cmp.setModel(new com.codename1.ui.list.DefaultListModel(a)); 

看到這個輸出

see this output

我的渲​​染畫面

my renderer screen

輸出必須是我的形象和困惑寫在其下方。

回答

2

在spanlabel中存在一些問題,所以用textarea替換spanlabel,並取消選中與上面類似的editable。

ArrayList<Map<String, Object>> a = new ArrayList<Map<String, Object>>(); 
HashMap<String, Object> m = new HashMap<String, Object>(); 
Image image=fetchResourceFile().getImage("puzzle_icon.png"); 
m.put("gSR_image", image); 
**m.put("gSR_textarea", "its working");** 
a.add(m); 
cmp.setModel(new com.codename1.ui.list.DefaultListModel(a)); 
+0

另一種選擇突出位置:https://www.codenameone.com/manual/components.html#_generic_list_cell_renderer是到'gSR_image'重命名爲'gSR_imageFixed',這將防止渲染試圖從它取數據。 –

+0

忘了補充說,SpanLabel/Button在渲染器中不能很好地工作。您應該使用TextArea並相應地設置它。還要注意,以上組件將** NOT **行像在普通容器中那樣動態地中斷。 –

+0

@ShaiAlmog你的解決方案使用文本,但對於圖像相同是行不通的。我試着在末尾加上'Fixed'字樣,但是這個標籤不是'ImageViewer',而是強制'Label'來選擇在渲染器中設置的圖像。最後,解決哪個工作是用'Label'和'name'代替'ImageViewer'必須在末尾沒有'Fixed'字樣。 'Image image = fetchResourceFile()。getImage(「puzzle_icon.png」); m.put(「gSR_image」,圖片);'現在這個工作很完美。 –