2011-04-04 74 views
0

我正在开发一个android媒体播放器。我是ANDROID的新手。我正在使用下面的代码来显示查询结果中的所有音乐。我希望每首歌都有一次,但如果我在适配器视图中设置文本大小,则它会多次显示一首歌曲,并忽略其他许多歌曲,如下面的代码所示。如何在适配器视图中设置文本大小并避免此问题?在适配器视图上需要Android帮助来设置文本大小

感谢ü

public class MusicAdapter extends BaseAdapter { 
     private Context mContext; 

     public MusicAdapter(Context c) { 
       mContext = c; 
     } 

     public int getCount() { 
       return count; 
     } 

     public Object getItem(int position) { 
       return position; 
     } 

     public long getItemId(int position) { 
       return position; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
       System.gc(); 
       TextView tv = new TextView(mContext.getApplicationContext()); 
       tv.setTextSize(25);      //THE PROBLEM IS HERE 
       String id = null; 
       if (convertView == null) { 
        music_column_index = musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME); 
        musicCursor.moveToPosition(position); 
        id = musicCursor.getString(music_column_index); 
        music_column_index = musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID); 
        musicCursor.moveToPosition(position); 
        String artist = musicCursor.getString(music_column_index); 
        id += "Artist:" + artist; 
        tv.setText(id); 
       } else 
        tv = (TextView) convertView; 
       return tv; 
     } 
    } 

回答

0

我以SimpleCursorAdapter像下面解决它。它是一个内置的适配器,非常聪明。 This link helped me a lot

而且你不应该设置listview的android:layout_height =“wrap_content”。它导致重复出现的列表项。

ListAdapter adapter = new SimpleCursorAdapter(this, 
      // Use a template that displays a text view 
      R.layout.list_item, 
      // Give the cursor to the list adatper 
      musicCursor, 
      // Map the NAME column in the people database to... 
      new String[] { MediaStore.Audio.Media.TITLE, 
      MediaStore.Audio.Media.ARTIST }, 
      // The "text1" view defined in the XML template 
      new int[] { R.id.music_title, R.id.music_artist }); 
    setListAdapter(adapter); 
0

可能是因为你写的try {}语句中,虽然在同一个代码? ))

我的意思是这几行:

path.add(musicCursor.getString(musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA))); 
      title.add(musicCursor.getString(musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE))); 
      artist.add(musicCursor.getString(musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST))); 
      album.add(musicCursor.getString(musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM))); 
      year.add(musicCursor.getString(musicCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.YEAR))); 
+0

不,这不是问题。无论如何感谢您的回复。我找到了原因。 – Imon 2011-04-07 00:12:31

+0

所以我的问题改变了。它是由于在适配器视图中更改文本大小而引起的。 – Imon 2011-04-07 00:26:34