Вам нужно будет отслеживать, какие строки были нажаты (и, следовательно, есть изображения, которые скрыты), а какие нет.Я бы использовал массив логических значений для этого.
Переопределите метод 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
}
}
}