Hi,
If slaveListening item is set, the slave interrupt is enabled at initialization time and the slave always listens to the line for a master addressing it. Any events are reported to the application through the callback function provided at initialization time.
So Master always starts with sending device address with R/W bit. Upon receving this, callback is called with I2C_SLAVE_EVENT_RX_REQ or I2C_SLAVE_EVENT_TX_REQ events depending R/W bit received. You can use LPI2C_DRV_SlaveSetRxBuffer() or LPI2C_DRV_SlaveSetTxBuffer() to provide the appropriate buffers for transmit or receive with given number of bytes to be transfered. As shown in the demo example.
If master still sending or requesting more bytes you got I2C_SLAVE_EVENT_RX_FULL or I2C_SLAVE_EVENT_TX_EMPTY events and above functions can be called again.
For stop or repeated start condition detected an I2C_SLAVE_EVENT_STOP event is called.
So the usage depends on used protocol, I think. Obviously if master request data from specified slave address/register it looks like below

Master sends device address with R/W =0 followed by address/register to be read then repeat start is send. Using driver you got I2C_SLAVE_EVENT_RX_REQ, you define receive buffer. After next byte received you should get I2C_SLAVE_EVENT_STOP event and first byte in receive buffer should be address, in your case ID probably. As master then sends again device address with R/W = 1, you got I2C_SLAVE_EVENT_TX_REQ event an you can specify the TX buffer to be sent.
BR, Petr