Peter BXXXXlke
- Forum-Beiträge: 16
24.07.2011, 00:42:38 via Website
24.07.2011 00:42:38 via Website
Hallo,
ich habe ein kleines Problem mit einem Listview in dem meine ganzen Lieder angezeigt werden sollen. Er listet zwar alle auf,.. ABER er setzt die Titel falsch. Die ersten 20-30 Titelnamen wiederholen sich,...aber wenn ich weiter unten raufklicke, dann wird der eigentliche Song gespielt,...nur halt mit falschen Namen in der Liste angezeigt. Ich denke ich müsste nach dem Laden den View updaten,..aber wie? hier der Code:
Danke für hilfreiche Kommentare
Peter
ich habe ein kleines Problem mit einem Listview in dem meine ganzen Lieder angezeigt werden sollen. Er listet zwar alle auf,.. ABER er setzt die Titel falsch. Die ersten 20-30 Titelnamen wiederholen sich,...aber wenn ich weiter unten raufklicke, dann wird der eigentliche Song gespielt,...nur halt mit falschen Namen in der Liste angezeigt. Ich denke ich müsste nach dem Laden den View updaten,..aber wie? hier der Code:
1public class LoadTitles extends Activity implements OnClickListener {
2 ListView musiclist;
3 Cursor musiccursor;
4 int music_column_index;
5 int count;
6 MediaPlayer mMediaPlayer;
7
8 public void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.main);
11 init_phone_music_grid();
12 musiclist.refreshDrawableState();
13
14 }
15
16 private void init_phone_music_grid() {
17 System.gc();
18 String[] proj = { MediaStore.Audio.Media._ID,
19 MediaStore.Audio.Media.DATA,
20 MediaStore.Audio.Media.DISPLAY_NAME,
21 MediaStore.Video.Media.SIZE };
22 musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
23 proj, null, null, null);
24 count = musiccursor.getCount();
25 musiclist = (ListView) findViewById(R.id.listView1);
26 musiclist.setAdapter(new MusicAdapter(getApplicationContext()));
27
28 musiclist.setOnItemClickListener(musicgridlistener);
29 mMediaPlayer = new MediaPlayer();
30 }
31
32 private OnItemClickListener musicgridlistener = new OnItemClickListener() {
33 public void onItemClick(AdapterView parent, View v, int position,
34 long id) {
35 System.gc();
36 music_column_index = musiccursor
37 .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
38 musiccursor.moveToPosition(position);
39 String filename = musiccursor.getString(music_column_index);
40
41 try {
42 if (mMediaPlayer.isPlaying()) {
43 mMediaPlayer.reset();
44 }
45 mMediaPlayer.setDataSource(filename);
46 mMediaPlayer.prepare();
47 mMediaPlayer.start();
48 } catch (Exception e) {
49
50 }
51 }
52 };
53
54 public class MusicAdapter extends BaseAdapter {
55 private Context mContext;
56
57 public MusicAdapter(Context c) {
58 mContext = c;
59 }
60
61 public int getCount() {
62 return count;
63 }
64
65 public Object getItem(int position) {
66 return position;
67 }
68
69 public long getItemId(int position) {
70 return position;
71 }
72
73 public View getView(int position, View convertView, ViewGroup parent) {
74 System.gc();
75 TextView tv = new TextView(mContext.getApplicationContext());
76 String id = null;
77 if (convertView == null) {
78 music_column_index = musiccursor
79 .getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
80 musiccursor.moveToPosition(position);
81 id = musiccursor.getString(music_column_index);
82 music_column_index = musiccursor
83 .getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE);
84
85 tv.setText(id);
86 } else
87 tv = (TextView) convertView;
88 return tv;
89 }
90 }
91}
2 ListView musiclist;
3 Cursor musiccursor;
4 int music_column_index;
5 int count;
6 MediaPlayer mMediaPlayer;
7
8 public void onCreate(Bundle savedInstanceState) {
9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.main);
11 init_phone_music_grid();
12 musiclist.refreshDrawableState();
13
14 }
15
16 private void init_phone_music_grid() {
17 System.gc();
18 String[] proj = { MediaStore.Audio.Media._ID,
19 MediaStore.Audio.Media.DATA,
20 MediaStore.Audio.Media.DISPLAY_NAME,
21 MediaStore.Video.Media.SIZE };
22 musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
23 proj, null, null, null);
24 count = musiccursor.getCount();
25 musiclist = (ListView) findViewById(R.id.listView1);
26 musiclist.setAdapter(new MusicAdapter(getApplicationContext()));
27
28 musiclist.setOnItemClickListener(musicgridlistener);
29 mMediaPlayer = new MediaPlayer();
30 }
31
32 private OnItemClickListener musicgridlistener = new OnItemClickListener() {
33 public void onItemClick(AdapterView parent, View v, int position,
34 long id) {
35 System.gc();
36 music_column_index = musiccursor
37 .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
38 musiccursor.moveToPosition(position);
39 String filename = musiccursor.getString(music_column_index);
40
41 try {
42 if (mMediaPlayer.isPlaying()) {
43 mMediaPlayer.reset();
44 }
45 mMediaPlayer.setDataSource(filename);
46 mMediaPlayer.prepare();
47 mMediaPlayer.start();
48 } catch (Exception e) {
49
50 }
51 }
52 };
53
54 public class MusicAdapter extends BaseAdapter {
55 private Context mContext;
56
57 public MusicAdapter(Context c) {
58 mContext = c;
59 }
60
61 public int getCount() {
62 return count;
63 }
64
65 public Object getItem(int position) {
66 return position;
67 }
68
69 public long getItemId(int position) {
70 return position;
71 }
72
73 public View getView(int position, View convertView, ViewGroup parent) {
74 System.gc();
75 TextView tv = new TextView(mContext.getApplicationContext());
76 String id = null;
77 if (convertView == null) {
78 music_column_index = musiccursor
79 .getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
80 musiccursor.moveToPosition(position);
81 id = musiccursor.getString(music_column_index);
82 music_column_index = musiccursor
83 .getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE);
84
85 tv.setText(id);
86 } else
87 tv = (TextView) convertView;
88 return tv;
89 }
90 }
91}
Danke für hilfreiche Kommentare
Peter