Search code examples
javaexceptiongwtcelltable

GWT CellTable getRowElement throwing IndexOutOfBoundsException


I am using a CellTable in GWT and trying to add styling to a row whenever certain events happen. The code to add styling is as follows:

Range range = playlistTable.getVisibleRange();
int start = range.getStart();

for (int i = start; i < start + playlistTable.getPageSize(); i++) {

     if (playlistData.get(i) == currentSong) {
            playlistTable.getRowElement(i).addClassName("highlightRow");

     } else {
            playlistTable.getRowElement(i).removeClassName("highlightRow");
     }
 }

When the app loads and the first page of the cell table is displayed, everything works perfectly. However when I scroll to the next page and make a call to the above code, GWT throws an IndexOutOfBoundsException. It does not like my index when I make the call to getRowElement, which only occurs if the index is "not on the current page." It's as though getRowElement always thinks the current page is the first page. If I scroll back to the first page, everything behaves fine. Has anybody encountered this? Am i missing something or is this a bug in GWT?


Solution

  • I suspect the problem is that start is 0 on the page that works. What happens if you do playlistTable.getRowElement(i - start) ? You may have to throw a + 1 or a - 1 in somewhere.