the_author_ID()
says in Codex:
It displays the unique numeric user ID for the author of a post; the ID is assigned by WordPress when a user account is created. This tag must be used within The Loop.
So, it won’t work.
Try using the following code* within a loop:
<li class="author vcard">
<a class="url fn n" href="https://wordpress.stackexchange.com/questions/113653/<?php echo get_author_posts_url( false, $authordata->ID, $authordata->user_nicename ); ?>" title="<?php printf( __( 'View all posts by %s', 'my-theme' ), $authordata->display_name ); ?>"><?php the_author(); ?></a>
</li>
* Thanks to Ian Stewart