private boolean moveToNextInvalid ( ) { boolean hasNext = false ; // If requery has not been performed, a requery dao has been set, and there are invalid positions if ( invalidCursor == null && dao != null && hasInvalidPositions ( ) ) { // Close the original cursor when performing an invalid cursor query super . close ( ) ; // Set the blob columns to return as null List < TColumn > blobColumns = dao . getTable ( ) . columnsOfType ( GeoPackageDataType . BLOB ) ; String [ ] columnsAs = dao . buildColumnsAsNull ( blobColumns ) ; query . set ( UserQueryParamType . COLUMNS_AS , columnsAs ) ; // Query without blob columns and create an invalid cursor UserCursor < TColumn , TTable , TRow > requeryCursor = dao . query ( query ) ; invalidCursor = createInvalidCursor ( dao , requeryCursor , getInvalidPositions ( ) , blobColumns ) ; } if ( invalidCursor != null ) { hasNext = invalidCursor . moveToNext ( ) ; } return hasNext ; }
Move to the next position of invalid rows to requery . Perform the requery the first time .