当前位置: 代码迷 >> Android >> 问几个小问题。
  详细解决方案

问几个小问题。

热度:122   发布时间:2016-05-01 22:09:55.0
问几个问题。。。。
package com.android.test;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
class Mp3Filter implements FilenameFilter {
public boolean accept(File dir, String name) {
return (name.endsWith(".mp3"));
}
}
public class MeusicDemo extends ListActivity {
   
 private static final String MEDIA_PATH = new String("/sdcard/");
 private List<String> songs = new ArrayList<String>();
 private MediaPlayer mp = new MediaPlayer();
 
 @Override
  public void onCreate(Bundle icicle) {
  try {
  super.onCreate(icicle);
  setContentView(R.layout.songlist);
  updateSongList();
  } catch (NullPointerException e) {
  Log.v(getString(R.string.app_name), e.getMessage());
  }
  }
   
  public void updateSongList() {
File home = new File(MEDIA_PATH);
if (home.listFiles( new Mp3Filter()).length > 0) {
for (File file : home.listFiles( new Mp3Filter())) {
songs.add(file.getName());
}

ArrayAdapter<String> songList = new ArrayAdapter<String>(this,R.layout.song_item,songs);
setListAdapter(songList);
}
}
   
 @Override
  protected void onListItemClick(ListView l, View v, int position, long id) {
  try {
   
  mp.reset();
  mp.setDataSource(MEDIA_PATH + songs.get(position));
  mp.prepare();
  mp.start();
  } catch(IOException e) {
  Log.v(getString(R.string.app_name), e.getMessage());
  } 
 }
}







偶是菜鸟,首先请告诉我下 return (name.endsWith(".mp3")); 这句话是什么意思?
updateSongList() 这个方法能不能一句句都注释下,看不懂。。。。
还有不知道是找的当前文件夹下的还是会递归到子文件夹找。。。。











1

------解决方案--------------------
return (name.endsWith(".mp3"));

在String类中有一个endsWith的方法。
判断name这个对象中的文本是否以".mp3"结尾。
如果是返回true,如果不是返回false

就是判断是否是mp3文件。

 boolean endsWith(String suffix) 
测试此字符串是否以指定的后缀结束。 

对应有一个startsWith方法。
boolean startsWith(String prefix) 
测试此字符串是否以指定的前缀开始。
------解决方案--------------------
Java code
public void updateSongList() {File home = new File(MEDIA_PATH);  //以MEDIA_PATH为路径,创建File对象if (home.listFiles( new Mp3Filter()).length > 0) {   //判断是否有MP3文件,如果有执行{}for (File file : home.listFiles( new Mp3Filter())) {  //如果有MP3文件,迭代MEDIA_PATH目录下的MP3文件songs.add(file.getName());   //加入到songs  ArrayAdapter<String> songList}
------解决方案--------------------
LS正解
  相关解决方案