android - 创建按字母顺序排序歌曲的 ListView android

标签 android listview sorting albumart

你好,我真的是 android 的新手,我正在开发一个音乐播放器,到目前为止,我设法填充了一个 ListView ,我需要按字母顺序对列表进行排序,我想在 ImageView 中显示歌曲的专辑封面请帮忙。

这是代码

public class MainActivity extends Activity {
ListView musiclist;
Cursor musiccursor;
int music_column_index;
int count;
MediaPlayer mMediaPlayer;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      init_phone_music_grid();
}

private void init_phone_music_grid() {

      String[] proj = { MediaStore.Audio.Media._ID,
  MediaStore.Audio.Media.DATA,
  MediaStore.Audio.Media.TITLE,
  MediaStore.Audio.Albums.ALBUM_ID,
  MediaStore.Audio.Albums._ID,
  MediaStore.Audio.Albums.ALBUM_ART,
  MediaStore.Video.Media.SIZE };
      musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, null, null, null);
      count = musiccursor.getCount();
      musiclist = (ListView) findViewById(R.id.listView);
      musiclist.setAdapter(new MusicAdapter(getApplicationContext()));



      musiclist.setOnItemClickListener(musicgridlistener);
      mMediaPlayer = new MediaPlayer();
}

    private OnItemClickListener musicgridlistener = new OnItemClickListener() {
      public void onItemClick(AdapterView parent, View v, int position,long id) {

            music_column_index = musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
            musiccursor.moveToPosition(position);
            String filename = musiccursor.getString(music_column_index);

            try {
                  if (mMediaPlayer.isPlaying()) {
                        mMediaPlayer.reset();
                  }
                  mMediaPlayer.setDataSource(filename);
                  mMediaPlayer.prepare();
                  mMediaPlayer.start();
            } catch (Exception e) {

            }
      }
};

     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;
      }

      @Override
      public View getView(int position, View convertView, ViewGroup parent) {

          String id = null;
          String id1 = null;
          LayoutInflater inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
        music_column_index = musiccursor
        .getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE);
          musiccursor.moveToPosition(position);
                    id = musiccursor.getString(music_column_index);
                              music_column_index = musiccursor
                                   .getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE);
                                                   musiccursor.moveToPosition(position);
                                                       id1 = musiccursor.getString(music_column_index);                         
        TextView Title = (TextView) rowView.findViewById(R.id.titlelist);
        TextView Artist = (TextView) rowView.findViewById(R.id.artistlist);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.iconlist);
        // What should i do to set the album art to this imageview ????
        Title.setText(id);
        Artist.setText(id1);
        // change the icon for Windows and iPhone


        return rowView;
      }
}
}

最佳答案

要获得排序的歌曲列表,请将 managedQuery 的最后一个参数从 null 更改为您希望结果排序的属性

musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, null, null,COLUMN_NAME); 

即如果您想对歌曲标题列表进行排序,请执行类似

的操作
musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, null, null,MediaStore.Audio.Media.TITLE);

看看this图书馆。它有助于像 IOS 一样按字母顺序划分列表。

关于android - 创建按字母顺序排序歌曲的 ListView android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25084352/

相关文章:

android - 像在 viewpager 中一样在可翻转堆栈 View 中排列 ImageView

c# - 最近有没有在 ScrollView 中移动 map (xamarin.forms.maps)的解决方案?

java - 在 ListView 中显示 SQLite

java - 将项目添加到另一个 Activity 中的 ListView (仅添加 1 个条目)

java - 使用 Collections.sort 对自定义类数组列表字符串进行排序

java - 如何清除谷歌地图上显示的路线?

android - 如何从图像中获取信息?

java - 更新 ListView 不起作用

java - 在 ArrayList 上排序但 ArrayList 具有相同的值

javascript - 按属性对 Dom 元素进行排序 JS/Jquery