新手android中ListView实现音乐列表
2019独角兽企业重金招聘Python工程师标准>>>
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>
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;
}}
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));
}
}属性实体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实现音乐列表相关推荐
- android xml 列表展示,Android中ListView实现展示列表数据
1.在activity_main.xml中添加一个ListView xmlns:tools="http://schemas.android.com/tools" android:l ...
- Android中ListView选中事件setOnItemSelectedListener无反应不生效问题
Android中ListView选中事件setOnItemSelectedListener无反应不生效问题 在学习Android中ListView组件时,android模拟器运行app时,发现点击有反 ...
- android listview 分析,Android中ListView用法实例分析
本文实例分析了Android中ListView用法.分享给大家供大家参考,具体如下: 通过在Layout中添加ListView Widget可以达到在页面布局具有列表效果的交互页面.在这里通过举例来说 ...
- android中ListView控件onItemClick事件中获取listView传递的数据
http://blog.csdn.net/aben_2005/article/details/6592205 本文转载自:android中ListView控件&&onItemClick ...
- android listview 数据同步,android中ListView数据刷新时的同步方法
本文实例讲述了android中ListView数据刷新时的同步方法.分享给大家供大家参考.具体实现方法如下: public class Main extends BaseActivity { priv ...
- android 相册列表,Android中的图库相册列表
我想获取手机相册的相册列表. 我试过码位它不工作Android中的图库相册列表 public void onCreate(Bundle savedInstanceState) { super.onCr ...
- android listview高级,Android中Listview点赞功能的实现
最近这段时间一直在看Android,利用Listview去实现点赞功能,下面给大家介绍下基本思路. 基本思路: 进入界面–>获取数据–> 在Listview中显示–> 通过map集合 ...
- Android中ListView的使用以及使用适配器设置数据源
场景 Android中使用Adapter(适配器)给RecycleView设置数据源: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...
- 【Android】 Android中ListView使用详解
ListView的使用方法 ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView ,今天我通过一个demo来教大家怎么样使用ListView组件 绘 ...
- android中的 listview,Android中ListView的初步认识(一)
ListView是安卓开发中常用的组件之一,它的作用是在一个垂直的列表中展现出所需的项目.接下来,我们看一下ListView的实现方法: 第一种 是常见的在XML中定义然后在activity中使用fi ...
最新文章
- Mysql和Hadoop+Hive有什么关系?
- 有三AI小程序上线,把你的代码show给世界
- 关于华为海思Hi35XX系列开发的思考与总结
- 第二弹:超全Python学习资源整理(进阶系列)
- bootstrap --- 分页
- php smtp发送附件,PHP:如何使用smtp设置发送带附件的电子邮件?
- linux sql语句传参数,Linux/Unixshell参数传递到SQL脚本
- leetcode -- medium part
- 微课|中学生可以这样学Python(7.3.1节):私有成员与公有成员
- 单包攻击_SQL Server Integration Services 2016中的单包部署
- 【Codeforces 404C】Restore Graph
- windows 下 LITE IDE go lang 安装配置使用
- 洛谷题单-【算法1-5】贪心
- C语言关键字分析系列
- MySQL错误ERROR 1045 (28000): Access denied for user 'root'@'localhos
- 谷歌浏览器如何收藏网站 谷歌浏览器收藏网站的方法步骤
- idea无法识别中文
- ubuntu18.04安装pytorch、cuda、cudnn和miniconda
- 华为云跨服务器传输文件,与云服务器传输文件
- 考古中怎么判断化石的年代?碳14的半衰期?然后呢?//2021-2-5 知其然,知其所以然。
热门文章
- 【OpenCV学习笔记】【错误处理】计算机缺失MSVCP120D.dll
- EXCEL VLOOKUP函数的使用
- “AI+遥感”产品研究现状
- flutter android 权限,Flutter permission_handler 权限插件的使用详解
- java并发编程实战读书笔记之FutureTask
- 4种方案,帮你解决Maven创建项目过慢问题
- 技术人真的能做一辈子技术么?
- NDK开发才是有精华和特色的部分
- 前大灯是近光灯还是远光灯_夜间上高速使用近光灯?不会开车就别开,否则12分都不够扣!...
- 判断整数_2021暑期强化不定方程整数解问题