Как создать несколько флажков на холсте

У меня возникают проблемы, когда я пытаюсь создать флажок на холсте.

Мой флажок работает хорошо, но я не знаю, как сохранить значение каждого элемента, это означает, что когда пользователь проверяет строку 1, а затем переходит к другому флажку строки, все еще проверяет строку 1, и когда пользователь проверяет строки 1 и 2 и перемещает в другую строку, флажок отметит строки 1 и 2.

Но я не могу найти решение этой проблемы


person MYE    schedule 04.11.2011    source источник


Ответы (1)


измените свой код, чтобы использовать selectTodelete в качестве логического массива вместо int, примерно как показано ниже

    // ...initialization of DataList
    boolean[] selectTodelete = new boolean[2]; // instead of int
    { selectTodelete[0] = selectTodelete[1] = false; } // init array
    Command editCommand, backCommand,selectCmd, unselectCmd,selectAll;
    //...

    protected void paint(Graphics g) {
        //...
        for(int i =0 ; i<countRow; i++ ){
            //draw background
            //...
                     if(selectTodelete[i]){ // was selectTodelete == 1
                            //draw select dot at location for row 'i'
                            //...
                     }
            // remove: you don't need that anymore: if(selectTodelete == 2) {
                            //draw select dot...
            //}

            // draw a checkbox before each item
            // ...
        }
    }

    public void commandAction(Command c, Displayable d) {
        //...
        if(c == selectCmd){
            selectTodelete[selectedItem] = true;
        }
        if(c== unselectCmd){
            selectTodelete[selectedItem] = false;
        }
        if(c == selectAll){
            selectTodelete[0] = selectTodelete[1] = true;
        }
        repaint();
    }
    //...
}

обновление - ответ на вопрос в комментариях

Я хочу, чтобы RCID подходил для проверки, это означает, что когда строка была проверена, я могу получить этот идентификатор, и когда я использую команду удаления, она удалит все строки, которые были проверены.

Для этого вы можете открыть selectTodelete для использования вне его класса с помощью геттера или, что еще лучше, с помощью метода, как показано ниже...

    boolean isSelected(int elementNum) {
        return elementNum >= 0 && elementNum < selectTodelete.length
                && selectTodelete[elementNum];
    } // modelled after javax.microedition.lcdui.Choice.isSelected

... информация, представленная таким образом, может быть использована в дальнейшем где угодно, когда вам это нужно для работы с RCID, например, в методе ниже:

    Vector useSelection(DataList dataList, DataStore[][] ds) {
        Vector result = new Vector();
        int count = ds.length;
        for(int i = 0; i < count; i++ ) {
            if (!dataList.isSelected(i)) {
                continue; // skip non selected
            }
            System.out.println("RCID selected: [" + ds[i][5].cellText + "]");
            result.addElement(ds[i][5]);
        }
        return result;
    }
person gnat    schedule 05.11.2011
comment
Извини, брат, могу я задать тебе еще один вопрос. в моем коде я хочу, чтобы RCID подходил для проверки, это означает, что когда строка была проверена, я могу получить этот идентификатор, и когда я использую команду удаления, она удалит все проверенные строки. Спасибо - person MYE; 05.11.2011
comment
@MYE Я обновил ответ, чтобы показать, как использовать selectTodelete для работы с RCID. - person gnat; 05.11.2011
comment
Большое спасибо, но мне интересно, как добавить его в массив, потому что мне нужно получить идентификатор, чтобы удалить элемент - person MYE; 06.11.2011
comment
Мне интересно, как преобразовать вектор в J2Me в массив int, потому что мне нужно получить значение int, чтобы удалить запись в наборе результатов. В j2me это может быть vector().toArray, но как это сделать в J2me? - person MYE; 11.11.2011
comment
@MYE, если вам нужно значение int, конвертировать не нужно. Чтобы получить это значение по индексу i, просто используйте метод vector elementAt: ((Integer)(vector.elementAt(i))).intValue() - person gnat; 14.11.2011