Shopping List application
janos already pointed out some important issues. I'm just going to add a few

Separate concerns

A ShoppingList is a shopping list, nothing more. It could be simply a wrapper around a List with maybe some additional convenience functions. It shouldn't be responsible for creating items from user input, much less asking the user for that input. Therefore, most of the code in method addItem() belongs to another class.

Explicitly declare menu options

You are using magic numbers to identify your menu options. Wait, I just said menu option. This is a very important entity in your program, yet it doesn't appear explicitly anywhere, only implicitly in your println()s and ifs. Let's make an enum for it. This will also allow us to get rid of the magic numbers.

enum MenuOption {
    ADD_ITEM("Add an item to the list."),
    DISPLAY_ITEMS("Display list and total number of items."),
    EXIT("Exit.");

    private final String message;

    private MenuOption(String message){
        this.message = message;
    }

    public String getMessage(){
        return message;
    }
}




ShoppingList myList = new ShoppingList();
Scanner scanner = new Scanner(System.in);
MenuOption selectedOption = null;

while(selectedOption != MenuOption.EXIT){

    selectedOption = askUserOption(scanner);

    switch(selectedOption){
        case ADD_ITEM:                
            myList.addItem();
            break;
        case DISPLAY_ITEMS:
            myList.displayItem();
            break;
    }
}




private MenuOption askUserOption(Scanner scanner){
    System.out.println("");
    System.out.println("----- Shopping List------");
    for(int i=0; i&lt;MenuOption.values().length; i++){
        MenuOption option = MenuOption.values()[i];
        System.out.println("(" + i + ") " + option.getMessage());
    }

    int numericInput = scanner.nextInt();
    // TODO check for invalid inputs
    return MenuOption.values()[numericInput]; 
}


Wrap user prompting

Instead of writing System.out.println() at every point where you need to comunicate to your user, it might be a good idea to write a class for this purpose. For example:

class UserPrompter {
    public void prompt(String message){
        System.out.println(message);
    }
}


This has at least two benefits: 


It makes the intent of your code more clear. You are not just printing to stdout (maybe for debugging purposes) - you are actually sending a message to the user of your application.
It makes it easier to change the means of communication in the future. At one time you may want to display the messages on a web page instead of printing to stdout.


This last piece of advise, however, will add additional indirection that may not be needed. You may omit it if you feel that you'll be able to refactor your code at any time and just replace the println()s with something else.