2015-04-04 52 views
0

我创建了一个音频录制应用程序,我已经设法使用我选择的目录中的音频文件填充列表视图,但是我还想获得它们的长度,类型等 也点击它们,我想它打开一个新的活动与该音频文件的信息和播放它的能力。 附加屏幕截图显示我在说什么。Android:使用音频文件填充列表视图并打开新活动

这是我用来填充ListView代码:

ListView listView = (ListView) findViewById(R.id.song_list);  
myList = new ArrayList<String>(); 

    File directory = Environment.getExternalStorageDirectory(); 
    file = new File(directory + "/Audio"); 
    File list[] = file.listFiles(); 

    for(int i=0; i< list.length; i++) 
    { 
      myList.add(list[i].getName()); 
    } 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, android.R.id.text1, myList); 
    listView.setAdapter(adapter); //Set all the file in the list. 

任何帮助,将不胜感激,谢谢! http://i62.tinypic.com/rb9zja.png

+0

来填充单一列表项多个属性,你必须使用自定义列表视图。 [here](http://androidexample.com/How_To_Create_A_Custom_Listview_-_Android_Example/index.php?view=article_discription&aid=67&aaid=9) – tausif 2015-04-04 22:57:54

+0

谢谢,但我仍然不知道如何收集时间,日期和大小文件,因为它只是按名称列出文件。 – 2015-04-04 23:21:54

回答

0

必须有一个自定义适配器。

对任何错误提前道歉;我直接输入这个答案,并没有首先用IDE来证明它。

ListView listView = (ListView) findViewById(R.id.song_list);  
myList = new ArrayList<File>(); // note, list of Files, not Strings 

File directory = Environment.getExternalStorageDirectory(); 
file = new File(directory + "/Audio"); 
File list[] = file.listFiles(); 

// you could also use Arrays.asList() instead of a loop 
for(int i=0; i< list.length; i++) 
{ 
    myList.add(list[i]); // add the whole File instance to the list 
} 
MyFileArrayAdapter adapter = new MyFileArrayAdapter(this, 
     R.layout.my_file_List_item, myList); 
listView.setAdapter(adapter); //Set all the file in the list. 

listView.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     Intent intent = new Intent(); 
     intent.putExtra("file", (Serializable) parent.getAdapter().getItem(position)); 
     // in your target activity, get the file like this: 
     // File file = (File) getIntent().getSerializableExtra("file"); 
     startActivity(intent, FileDetailActivity.class); 
    } 
}); 

public static class MyFileArrayAdapter extends ArrayAdapter<File> { 

    private int mLayoutId; 

    public MyFileArrayAdapter(Context context, int layoutId, List<File> files) { 
     super(context, layoutId, files); 
     mLayoutId = layoutId; 
    } 

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

     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) getContext() 
        .getSystemService(LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(mLayoutId, parent, false); 
     } 

     File file = (File) getItem(position); 
     int fileSize = file.length(); 
     Date fileDateTime = new Date(file.lastModified()); 

     // set up your list item views here and fill in the size and date/time 
    } 
} 
+0

我想我的大脑昨天被炸了,花了一天的时间基本理解了,现在我已经开始工作了,谢谢。 – 2015-04-06 15:24:59

相关问题