Переведите числовое значение в соответствующую метку, используя средство форматирования ячеек из LinkedHashMap - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь отобразить значение из LinkedHashMap, используя ключ на столбце в сетке (PaginatedGrid).

В сетке я пытаюсь привести значение из public String format() к короткому.

В таблице приведен код, который я пробовал

grid.getField(MerchandiseSellerTargetsDS.FLD_TARGETTYPE).setCellFormatter(new CellFormatter() {

            @Override
            public String format(Object value, ListGridRecord record, int rowNum, int colNum) {
                short messageValue = ((Integer) value).shortValue();
                return Messages.targetTypeMap.get(messageValue);
            }
        }); 

В Messages.java

public static LinkedHashMap<Number, String> targetTypeMap;

targetTypeMap=new LinkedHashMap<>();
        targetTypeMap.put((short)1,"Value");
        targetTypeMap.put((short)2,"Unit");

Я ожидаю, что столбец будет заполнензначение из карты, например, если ключ равен 1, отображается «Значение» и если отображается 2 «Единица».Однако столбец не заполнен (он отображается пустым при выполнении).Что я мог сделать неправильно или это как я разыгрываю?

1 Ответ

0 голосов
/ 03 июля 2019

Ну, проблема была в том, как я кастую.Здесь я конвертирую значение в строку, которую затем конвертирую в тип Short

grid.getField(MerchandiseSellerTargetsDS.FLD_TARGETTYPE).setCellFormatter(new CellFormatter() {         
    @Override
    public String format(Object value, ListGridRecord record, int rowNum, int colNum) {
        short targetTypeMapKey = Short.valueOf((String)value);
        return Messages.targetTypeMap.get(targetTypeMapKey);
    }
    });
...