When echoing my own shortcode, it keeps adding a 1 at the end of my blogpost

This is your problem:

   public function listLayout() {
    return require( $this->plugin_path . "/admin/itemList.php" );
  }

Shortcodes need to return their output as a string, but this does not. The shortcode is outputting directly, rather than being output at the correct time by WordPress. This would become very apparent if nested shortcodes were used as the order of display would be incorrect.

This mistake is further compounded because require does not return the output, rather it will return success/failure. Because it found and loaded admin/itemList.php it returned 1, and that is where the trailing 1 is coming from.

To remedy this, use an output buffer to catch the output.