Simple velcro may be your best bet. First, i would recommend hitting up the junkyards/autoyards and looking for a decent headliner. Should be 50 bucks or less.
I have tried, to no avail, several different methods to fix it on my jeep. I tried the 3m adhesive spray and it simply ate the foam or whatever that was under the carpet. It sounded like a good idea, but in the end was a lot of hassle for nothing. I then tried some fabric stuff. It is a wierd backing that melts when ironed into a fabric glue. Put it between the foam backing and fabric headliner. Heat gun / iron later and it seemed to work. For a week.
I havent found anything that doesn't look like total ass that works. Id say give velcro a try, but dont hope it to look to great. MY opinion would be take it to an upholstry shop and let them work their magic. They can do amazing things. If you find your own way that works and looks good, lemme know. Im open to ideas, but untill then i guess it just sags and rubs my hair