DS used to be really good at tidying, I'd just tell him we were tidying up now and we had to put all the toys in this box and he'd run around helping. Likewise, if he had a food wrapper or something which needed to go in the bin we'd just tell him it needed to go there and off he'd go.
But now, he'll finish something and just throw the wrapper on the floor. We ask him to pick it up, and he just refuses. I've tried postponing the next activity until he does it, but this isn't practical all the time, and doesn't always work either. Mostly it's that as soon as it turns into a battle he goes into full-on bulldog (standard three year old?) mode and nobody gets anywhere.
This has also been happening with general tidying - I announce that it's time to tidy up at the end of the day, or to make space for a jigsaw he wants to do or whatever, and he lolls about on the sofa humphing and saying "I'm bored of tidying, I want you to do it" or making excuses like "My legs are broken"
So, I got fed up with this and announced one day that if he was not going to help tidy up his toys, then he wasn't old enough to have them, and if he was going to leave me to tidy them up by myself, I was going to put them away in the cupboard and he could have them when he could show me that he was responsible enough to look after his toys. This worked for a short while and was great, and then he reverted to the humphing. So tidying up now consists of me getting cross and him getting upset, when I said "I'm going to put this one in the cupboard now" (with many warnings, chances, trying to make it fun etc while I was tidying up) and then he'd burst into tears wailing "But I wanted to help, Mummy!" and it just frustrates me because I think that he should have just helped, then! And I give him the chance to help with the next thing and he doesn't - he just stands there like he doesn't know what to do. He DOES know what to do. So how can I get him to do it?