Am I selfish?
No you aren't being selfish. I personally think $650 for a shirt is ridiculous, BUT you earn the money, you should spend it however you like.
Well it wouldn't exactly hurt you to help her out, especially if she is trying hard to make ends meet. Groceries for her for a week would be an eighth of what you spent on that shirt. You could literally buy her groceries for 2 months for the price of that shirt. You can still buy your expensive clothes, but if you have a friend that is in real need of help, it is pretty selfish to put your luxurious over her essentials. But only if she is a good friend of yours, if she is just someone you speak to every couple of months then she's being very cheeky by asking for your money.