经过一上午的时间,播放列表算是初步搞定了,不过一定还有很多Bug要慢慢解决,下面是代码,希望大家指出不足和错误。。(我没有用到mediaStore多媒体数据库,算是最大的不足,只是用自己建的数据库,来保存歌曲的地址)
public class DBService { public static void save(String name,Context context){ //把歌曲添加到数据库 MusicDBOpenHelper helper=new MusicDBOpenHelper(context); SQLiteDatabase db= helper.getReadableDatabase(); db.execSQL("insert into music(music_name)values(?)",new Object[]{name}); db.close(); } public static List<Music> findAll(Context context){ //查找出数据库中的所有列表 List<Music> musics =new ArrayList<Music>(); MusicDBOpenHelper helper=new MusicDBOpenHelper(context); SQLiteDatabase db= helper.getReadableDatabase(); Cursor cursor=db.rawQuery("select * from music", null); while(cursor.moveToNext()){ Music music=new Music(); music.setId(cursor.getInt(0)); music.setMusicName(cursor.getString(1)); musics.add(music); } return musics; } }这个类操作数据库的,用来添加和查找歌曲的地址。(没有完善。。。)
public class MusicDBOpenHelper extends SQLiteOpenHelper { private static final String name="musics"; private static final int version=1; public MusicDBOpenHelper(Context context) { super(context, name, null, version); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL("create table IF NOT EXISTS music (id integer primary key autoincrement,music_name char(20))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("drop table IF EXISTS student"); onCreate(db); }}用来建数据库和版本控制。。
public void addList() //把数据库中的音乐信息加入播放列表。 { List<Music> musics =new ArrayList<Music>(); musics=DBService.findAll(MusicPalyerActivity.this); List<HashMap<String,String>> data=new ArrayList<HashMap<String,String>>(); for(Music music:musics){ HashMap<String,String> map=new HashMap<String,String>(); map.put("id",String.valueOf(music.getId())); map.put("music_name", music.getMusicName()); data.add(map); } SimpleAdapter adapter=new SimpleAdapter(MusicPalyerActivity.this, data, R.layout.music_items, new String[]{"id","music_name"}, new int[]{R.id.musicId,R.id.musicName}); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ListView listView=(ListView)parent; HashMap<String,String> map=(HashMap<String,String>)listView.getItemAtPosition(position); playMusic(map.get("music_name")); //播放单击选择的歌曲 } }); }