Each of the $10$ dwarfs either always tells the truth or always lies. It is known that each of them loves exactly one type of ice cream: vanilla, chocolate or fruit. First, Snow White asked those who like the vanilla ice cream to raise their hands, and everyone raised their hands, then those who like chocolate ice cream - and half of the dwarves raised their hands, then those who like the fruit ice cream - and only one dwarf raised his hand. How many of the gnomes are truthful?
1. Let's define the variables as follows:
   - \( v_T \): Number of dwarfs who like vanilla ice cream and tell the truth.
   - \( v_F \): Number of dwarfs who like vanilla ice cream and lie.
   - \( c_T \): Number of dwarfs who like chocolate ice cream and tell the truth.
   - \( c_F \): Number of dwarfs who like chocolate ice cream and lie.
   - \( f_T \): Number of dwarfs who like fruit ice cream and tell the truth.
   - \( f_F \): Number of dwarfs who like fruit ice cream and lie.

2. We are given the following information:
   - When asked who likes vanilla ice cream, everyone raised their hands.
   - When asked who likes chocolate ice cream, half of the dwarfs raised their hands.
   - When asked who likes fruit ice cream, only one dwarf raised his hand.

3. We can set up the following system of equations based on the given information:
   \[
   \begin{cases}
   v_T + v_F + c_T + c_F + f_T + f_F = 10 & \text{(Total number of dwarfs)} \\
   v_T + c_F + f_F = 10 & \text{(All dwarfs raised their hands for vanilla)} \\
   v_F + c_T + f_F = 5 & \text{(Half of the dwarfs raised their hands for chocolate)} \\
   v_F + c_F + f_T = 1 & \text{(One dwarf raised his hand for fruit)}
   \end{cases}
   \]

4. Subtract the second equation from the first equation:
   \[
   (v_T + v_F + c_T + c_F + f_T + f_F) - (v_T + c_F + f_F) = 10 - 10
   \]
   Simplifying, we get:
   \[
   v_F + c_T + f_T = 0
   \]
   Since the number of dwarfs cannot be negative, we must have:
   \[
   v_F = 0, \quad c_T = 0, \quad f_T = 0
   \]

5. Substitute \( v_F = 0 \), \( c_T = 0 \), and \( f_T = 0 \) back into the original equations:
   \[
   \begin{cases}
   v_T + c_F + f_F = 10 \\
   0 + 0 + f_F = 5 \\
   0 + c_F + 0 = 1
   \end{cases}
   \]

6. From the second equation, we get:
   \[
   f_F = 5
   \]

7. From the third equation, we get:
   \[
   c_F = 1
   \]

8. Substitute \( f_F = 5 \) and \( c_F = 1 \) into the first equation:
   \[
   v_T + 1 + 5 = 10
   \]
   Simplifying, we get:
   \[
   v_T = 4
   \]

9. The number of truthful dwarfs is given by:
   \[
   v_T + c_T + f_T = 4 + 0 + 0 = 4
   \]

The final answer is \(\boxed{4}\).