code: public ItemRef on(StorageEvent eventType, final OnItemSnapshot onItemSnapshot, final OnError onError) {
  		if(eventType == StorageEvent.PUT) {
  			this.get(onItemSnapshot, onError);
  		}
  		Event ev = new Event(eventType, this.table.name, this.primaryKeyValue, this.secondaryKeyValue, false, false, pushNotificationsEnabled,  onItemSnapshot);
  		context.addEvent(ev);
  		return this;
  	}
docs: Attach a listener to run the callback every time the event type occurs for this item.
  
  <pre>
  StorageRef storage = new StorageRef("your_app_key", "your_token");
  
  TableRef tableRef = storage.table("your_table");
  
  ItemRef itemRef = tableRef.item(new ItemAttribute("your_primary_key_value"),
  new ItemAttribute("your_secondary_key_value"));
  
  itemRef.on(StorageRef.StorageEvent.UPDATE,new OnItemSnapshot() {
  &#064;Override
  public void run(ItemSnapshot itemSnapshot) {
  if(itemSnapshot != null){
  Log.d("ItemRef", "Item updated : " + itemSnapshot.val());
  }
  }
  }, new OnError() {
  &#064;Override
  public void run(Integer integer, String errorMessage) {
  Log.e("ItemRef", "Error updating item: " + errorMessage);
  }
  });
  
  </pre>
  
  @param eventType
  The type of the event to listen. Possible values: put, update, delete.
  @param onItemSnapshot
  The callback to run when the event occurs. The function is called with the snapshot of affected item as argument. If the event type is "put", it will immediately trigger a "get" to retrieve the initial state and run the callback with the item snapshot as argument.  Note: If you are using GCM the value of received ItemSnapshot can be null.
  @param onError
  Response if client side validation failed or if an error was returned from the server.
  @return
  Current item reference