Thanks for your share!
The main concept for idle farm is the exp,sp. Rewards can be added also by some specific conditions, but in anycase it should't be as a main reward (in my pov).
About the code structure, it would be easier/correct to use an interface to build your xp/sp/rewards with their name as a tag. Your _itemsList array should be refactored and also your thought about IdleItem class (by naming view policy, im expecting data of an item (id,count) with the name IdleItem