2019独角兽企业重金招聘Python工程师标准>>>

  1. main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android :color/holo_blue_light"
        tools:context="com.example.mymusiclist.MainActivity$PlaceholderFragment" >

    <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:textSize="21sp"
            android:text="音乐列表" />
        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/textView1"  
            >
    </ListView>
    </RelativeLayout>

    listview.xml(布局xml)

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

    <TextView
            android:id="@+id/music_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="3dp"
            android:layout_marginLeft="3dp"
            android:layout_weight="1"
            android:text="music_title" />

    <LinearLayout
            android:id="@+id/ll1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="3dp"
            android:layout_marginTop="3dp"
            android:layout_weight="1"
            android:orientation="horizontal" >

    <TextView
                android:id="@+id/music_artist"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_marginLeft="3dp"
                android:text="music_artist" />

    <TextView
                android:id="@+id/music_duration"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:text="music_duration" />
        </LinearLayout>

    </LinearLayout>


  2. MainActivity.java

    package com.example.mymusiclist;

    import java.util.ArrayList;
    import java.util.List;

    import android.support.v7.app.ActionBarActivity;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.widget.ListView;
    import android.provider.MediaStore;

    public class MainActivity extends ActionBarActivity {
    private ListView listView;
    private ArrayList<MusicMp3> musicList = new ArrayList<MusicMp3>();
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.fragment_main);
            listView = (ListView) findViewById(R.id.listView1);
            musicList = getMp3Infos();
            MusicListAdapter adapter = new MusicListAdapter(this, musicList);
            listView.setAdapter(adapter);
        }
        public ArrayList<MusicMp3> getMp3Infos() {  //获取音乐列表信息
            Cursor cursor = getContentResolver().query(  
                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,  
                MediaStore.Audio.Media.DEFAULT_SORT_ORDER);  
            ArrayList<MusicMp3> mp3Infos = new ArrayList<MusicMp3>();  
            for (int i = 0; i < cursor.getCount(); i++) {  
                MusicMp3 mp3Info = new MusicMp3();  
                cursor.moveToNext();  
                long id = cursor.getLong(cursor  
                    .getColumnIndex(MediaStore.Audio.Media._ID));   //音乐id  
                String title = cursor.getString((cursor   
                    .getColumnIndex(MediaStore.Audio.Media.TITLE)));//音乐标题  
                String artist = cursor.getString(cursor  
                    .getColumnIndex(MediaStore.Audio.Media.ARTIST));//艺术家  
                long duration = cursor.getLong(cursor  
                    .getColumnIndex(MediaStore.Audio.Media.DURATION));//时长  
                long size = cursor.getLong(cursor  
                    .getColumnIndex(MediaStore.Audio.Media.SIZE));  //文件大小  
                String url = cursor.getString(cursor  
                    .getColumnIndex(MediaStore.Audio.Media.DATA));              //文件路径  
            int isMusic = cursor.getInt(cursor  
                .getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));//是否为音乐  
            if (isMusic != 0) {     //只把音乐添加到集合当中  
                mp3Info.setId(id);  
                mp3Info.setTitle(title);  
                mp3Info.setArtist(artist);  
                mp3Info.setDuration(duration);  
                mp3Info.setSize(size);  
                mp3Info.setUrl(url);  
                mp3Infos.add(mp3Info);  
                }  
            }  
        return mp3Infos;  
        }

    }


  3. MusicListAdapter.java

    package com.example.mymusiclist;

    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;

    import android.content.Context;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;

    public class MusicListAdapter extends BaseAdapter {
        private final static String TAG = "MusicListAdapter";
        private LayoutInflater inflater;
        private Context mContext;
        private ArrayList<Mp3Info> mList;
    public MusicListAdapter(Context context, ArrayList<Mp3Info> list){
        mContext = context;
        mList = list;
        inflater = LayoutInflater.from(context);
    }
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return mList.size();
        }

    @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return mList.get(position);
        }

    @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

    @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            View view;
            if(convertView != null){
                view = convertView;
            } else {
                view = inflater.inflate(R.layout.listview_item, parent, false);
            }
            TextView  title = (TextView)view.findViewById(R.id.music_title);
            TextView artist = (TextView) view.findViewById(R.id.music_artist);
            TextView duration = (TextView) view.findViewById(R.id.music_duration);
            String music_title = mList.get(position).getTitle();
            String music_artist = mList.get(position).getArtist();
            long music_duration = mList.get(position).getDuration();
            title.setText(music_title);
            if(music_artist.equals("<unknown>")){            
                artist.setText("未知艺术家");
            }else{
                artist.setText(music_artist);
            }
            Log.d(TAG, "music_artist============="+music_artist);
            duration.setText(getStringTime(music_duration));
            return view;
        }
    public String getStringTime(long duration){
           SimpleDateFormat sDateFormat = new SimpleDateFormat("mm:ss");
           return sDateFormat.format(new Date(duration));
    }
    }


  4. 属性实体MusicMp3.java

    package com.example.mymusiclist;

    public class MusicMp3 {

    //属性值,生成get和set方法  构造方法
        long id;
        long duration;
        long size;
        String title;
        String url;
        String artist;
        public MusicMp3(){ }
        
        public MusicMp3(long id, long duration, long size, String title, String url,
                String artist) {
            super();
            this.id = id;
            this.duration = duration;
            this.size = size;
            this.title = title;
            this.url = url;
            this.artist = artist;
        }

    public long getId() {
            return id;
        }
        public void setId(long id) {
            this.id = id;
        }
        public long getDuration() {
            return duration;
        }
        public void setDuration(long duration) {
            this.duration = duration;
        }
        public long getSize() {
            return size;
        }
        public void setSize(long size) {
            this.size = size;
        }
        public String getTitle() {
            return title;
        }
        public void setTitle(String title) {
            this.title = title;
        }
        public String getUrl() {
            return url;
        }
        public void setUrl(String url) {
            this.url = url;
        }
        public String getArtist() {
            return artist;
        }
        public void setArtist(String artist) {
            this.artist = artist;
        }
        @Override
        public String toString() {
            return "Mp3Info [id=" + id + ", duration=" + duration + ", size="
                    + size + ", title=" + title + ", url=" + url + ", artist="
                    + artist + "]";
        }
        
        
        
    }

转载于:https://my.oschina.net/u/1422716/blog/649423

新手android中ListView实现音乐列表相关推荐

  1. android xml 列表展示,Android中ListView实现展示列表数据

    1.在activity_main.xml中添加一个ListView xmlns:tools="http://schemas.android.com/tools" android:l ...

  2. Android中ListView选中事件setOnItemSelectedListener无反应不生效问题

    Android中ListView选中事件setOnItemSelectedListener无反应不生效问题 在学习Android中ListView组件时,android模拟器运行app时,发现点击有反 ...

  3. android listview 分析,Android中ListView用法实例分析

    本文实例分析了Android中ListView用法.分享给大家供大家参考,具体如下: 通过在Layout中添加ListView Widget可以达到在页面布局具有列表效果的交互页面.在这里通过举例来说 ...

  4. android中ListView控件onItemClick事件中获取listView传递的数据

    http://blog.csdn.net/aben_2005/article/details/6592205 本文转载自:android中ListView控件&&onItemClick ...

  5. android listview 数据同步,android中ListView数据刷新时的同步方法

    本文实例讲述了android中ListView数据刷新时的同步方法.分享给大家供大家参考.具体实现方法如下: public class Main extends BaseActivity { priv ...

  6. android 相册列表,Android中的图库相册列表

    我想获取手机相册的相册列表. 我试过码位它不工作Android中的图库相册列表 public void onCreate(Bundle savedInstanceState) { super.onCr ...

  7. android listview高级,Android中Listview点赞功能的实现

    最近这段时间一直在看Android,利用Listview去实现点赞功能,下面给大家介绍下基本思路. 基本思路: 进入界面–>获取数据–> 在Listview中显示–> 通过map集合 ...

  8. Android中ListView的使用以及使用适配器设置数据源

    场景 Android中使用Adapter(适配器)给RecycleView设置数据源: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...

  9. 【Android】 Android中ListView使用详解

    ListView的使用方法  ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView ,今天我通过一个demo来教大家怎么样使用ListView组件 绘 ...

  10. android中的 listview,Android中ListView的初步认识(一)

    ListView是安卓开发中常用的组件之一,它的作用是在一个垂直的列表中展现出所需的项目.接下来,我们看一下ListView的实现方法: 第一种 是常见的在XML中定义然后在activity中使用fi ...

最新文章

  1. Mysql和Hadoop+Hive有什么关系?
  2. 有三AI小程序上线,把你的代码show给世界
  3. 关于华为海思Hi35XX系列开发的思考与总结
  4. 第二弹:超全Python学习资源整理(进阶系列)
  5. bootstrap --- 分页
  6. php smtp发送附件,PHP:如何使用smtp设置发送带附件的电子邮件?
  7. linux sql语句传参数,Linux/Unixshell参数传递到SQL脚本
  8. leetcode -- medium part
  9. 微课|中学生可以这样学Python(7.3.1节):私有成员与公有成员
  10. 单包攻击_SQL Server Integration Services 2016中的单包部署
  11. 【Codeforces 404C】Restore Graph
  12. windows 下 LITE IDE go lang 安装配置使用
  13. 洛谷题单-【算法1-5】贪心
  14. C语言关键字分析系列
  15. MySQL错误ERROR 1045 (28000): Access denied for user 'root'@'localhos
  16. 谷歌浏览器如何收藏网站 谷歌浏览器收藏网站的方法步骤
  17. idea无法识别中文
  18. ubuntu18.04安装pytorch、cuda、cudnn和miniconda
  19. 华为云跨服务器传输文件,与云服务器传输文件
  20. 考古中怎么判断化石的年代?碳14的半衰期?然后呢?//2021-2-5 知其然,知其所以然。

热门文章

  1. 【OpenCV学习笔记】【错误处理】计算机缺失MSVCP120D.dll
  2. EXCEL VLOOKUP函数的使用
  3. “AI+遥感”产品研究现状
  4. flutter android 权限,Flutter permission_handler 权限插件的使用详解
  5. java并发编程实战读书笔记之FutureTask
  6. 4种方案,帮你解决Maven创建项目过慢问题
  7. 技术人真的能做一辈子技术么?
  8. NDK开发才是有精华和特色的部分
  9. 前大灯是近光灯还是远光灯_夜间上高速使用近光灯?不会开车就别开,否则12分都不够扣!...
  10. 判断整数_2021暑期强化不定方程整数解问题