For now, I will give a hint how it could be done in a simple way. You can create an array with raw resources:
int names[] = new int {R.raw.a,R.raw.b,R.raw.c};
don´t make a String array like You have done it, this will not work. Use this example above and create the mediaplayer like this:
MediaPlayer mp = MediaPlayer.create(LazyAdapter.this, names[0]);
EDIT
from Your example above, I see some wrong things.
First, You can´t pass a String to identify the number of an array. You did it like this:
final String ambil = kata.get(3)
and You trying to get the resource for mediaPlayer like:
MediaPlayer mp = MediaPlayer.create(LazyAdapter.this, R.raw.names[ambil]);
There You pass a string to get a resource from names[] ---> R.raw.names[ambil]];
Don´t write R.raw.names[], write only names[].
Also, You have to pass an integer to get a value from an array like:
names[0]
The question is, which integer You get from Your database, You say You get an id, but what is the value? For explanation, if You write names[0], that means that You get the first value of the array (because arrays starts with 0). In Your case, you refer to the resource R.raw.a . If You want to refer to the second song, You have to write names[1].
I don´t know how You have Your database implemented and in what way You give the _id. But be sure You give the _id in the way, that it will not be higher than the number of resources. If You create an autoincrement id, than it will not work in the case, when the value is higher than the number of songs.