我正在开发一个可以播放.mp3文件的应用程序。所以,在这个应用程序中,我创建了一个自定义列表视图适配器,用于将.mp3文件从raw文件夹填充到listview并创建了一个模型类,并且在我的原始文件夹中,我有20 .mp3 files.So,我想将所有原始文件夹.mp3文件添加到每行中的listview。之后当用户点击那个特定的listview项目时播放该歌曲给定的位置。
注意:我没有从SDCARD导入.mp3文件。
这是我的适配器
INT_MIN
这是我的模特课
int valueOf(t_node *node, int n, int *result) {
int current = 0;
while (current < n && node != NULL) {
node = node->next;
current += 1;
}
if (node == NULL) {
// no such node -- return a failure code
return 0;
} else {
// current == n
*result = node->value;
return 1;
}
}
这是我的MainActivity
public class RingtoneAdapter extends ArrayAdapter<RingtoneModel> {
private List<RingtoneModel> planetList;
private Context context;
public RingtoneAdapter(List<RingtoneModel> planetList, Context ctx) {
super(ctx, R.layout.ringtone_row_layout, planetList);
this.planetList = planetList;
this.context = ctx;
}
public int getCount() {
return planetList.size();
}
public RingtoneModel getItem(int position) {
return planetList.get(position);
}
public long getItemId(int position) {
return planetList.get(position).hashCode();
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
PlanetHolder holder = new PlanetHolder();
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.ringtone_row_layout, null);
TextView tv = (TextView) v.findViewById(R.id.name);
holder.planetNameView = tv;
v.setTag(holder);
}
else
holder = (PlanetHolder) v.getTag();
RingtoneModel p = planetList.get(position);
holder.planetNameView.setText(p.getName());
return v;
}
private static class PlanetHolder {
public TextView planetNameView;
}
}
所以,如果有人知道我怎么能做到这一切,请帮助我......
答案 0 :(得分:1)
当用户单击ListView中的按钮时,首先在ListView中获取项目索引。
View parentRow = (View) v.getParent();
ListView listView = (ListView) parentRow.getParent();
final int position = listView.getPositionForView(parentRow);
获得确切的位置索引后,找到英文单词audio file并为该音频文件创建一个URI。
Uri mp3 = Uri.parse("android.resource://"
+ context.getPackageName() + "/raw/"
+ datas.get(position).word);
获得音频文件URI后,您可以实例化MediaPlayer类并在Android中播放音频文件。
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(context, mp3);
mediaPlayer.prepare(); // might take long! (for buffering, etc)
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(onCompletionListener);
当音乐停止时,立即释放MediaPlayer实例,这样它就不会消耗大量资源。
private OnCompletionListener onCompletionListener = new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mediaPlayer.release();
mediaPlayer = null;
}
};