This is totally doable, I’m going to show you how to set your static mesh before spawn, and then you get back with us after that if you reach more issues that are not helped by that!
First, on your BP_Item actor, you need to make sure it has a static mesh component (red circle) and a Static Mesh object variable(1). Then, make that variable Instance editable so each one can be different, and expose that on spawn. This will give us a pin on the spawn actor node to input static mesh.
Next, on your construction script, have your static mesh Component be set by your Static Mesh Variable. This isn’t doing anything yet, but it will be set before spawn using SpawnActor!
Now, when you try to use SpawnActorFromClass and put in your Item blueprint as the class (4) there will be a new pin for your Static Mesh Variable because you exposed the pin (2). Whatever static mesh you pass in here will be what the item spawns with, and that is set BEFORE spawn, so it will have the collision you need, as long as the static mesh itself has collision.