Как отобразить и скрыть изображение в списке при нажатии на него в ежевике? - PullRequest
1 голос
/ 22 ноября 2011

Привет, я создал CustomListField и реализовал метод "drawListRow" для рисования изображения, текста и другого изображения в строкеТеперь, когда я нажимаю на список, изображение на правой стороне должно исчезнуть.когда я снова нажимаю на список, он должен появиться снова.как это сделатьПожалуйста, отправьте код.

1 Ответ

1 голос
/ 23 ноября 2011

Вам нужно будет отслеживать, какие строки были нажаты (и, следовательно, есть изображения, которые скрыты), а какие нет.Я бы использовал массив логических значений для этого.

Переопределите метод keyDown в CustomListField и используйте getSelectedIndex, чтобы выяснить, какая строка в настоящий момент выбрана.

В вашем методе drawListRow обратите внимание, что ListField передается в качестве параметра, приведите его обратно к CustomListField и реализуйте новый метод isRowClicked (int index), который возвращает информацию о том, нажата ли строка, и поэтому должен быть нарисованили без правого изображения.

Код примерно такой:

public class CustomListField extends ListField implements ListFieldCallback{

    private static final int TOTAL_ROWS = 10; //total number of rows in list
    private boolean[] clickedRows = new boolean[TOTAL_ROWS];

    public CustomListField(){
        //do all your instantiation stuff here
    }

    public boolean keyDown(int keycode, int time){

        int currentlySelectedRow = getSelectedIndex();

                //toggle the state of this row
                clickedRows[currentlySelectedRow] = !clickedRows[currentlySelectedRow];

        //consume the click
        return true;
    }

    public boolean isRowClicked(int index){
        return clickedRows[index];
    }

    public void drawListRow(ListField listField, Graphics graphics, int index,
        int y, int width) {

        CustomListField customListfield = (CustomListField) listField;

                //check whether this row is clicked 
                if(customListfield.isRowClicked(index)){

            //draw the state when the row is clicked

        } else {

            //draw the row when the row is not clicked
        }

    }

}
...