Android:用音频文件填充listview并打开新活动
我正在创建一个音频录制应用程序,我已经用我选择的目录中的音频文件填充了一个listview,但我也想得到它们的长度、类型等。 此外,在点击他们,我想它打开一个新的活动与有关的音频文件和播放它的能力的信息。 附上的截图显示了我在说什么 这是我用来填充listview的代码:Android:用音频文件填充listview并打开新活动,android,listview,audio,android-activity,populate,Android,Listview,Audio,Android Activity,Populate,我正在创建一个音频录制应用程序,我已经用我选择的目录中的音频文件填充了一个listview,但我也想得到它们的长度、类型等。 此外,在点击他们,我想它打开一个新的活动与有关的音频文件和播放它的能力的信息。 附上的截图显示了我在说什么 这是我用来填充listview的代码: ListView listView = (ListView) findViewById(R.id.song_list); myList = new ArrayList<String>(); Fil
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.
ListView ListView=(ListView)findViewById(R.id.song\u列表);
myList=新的ArrayList();
File directory=Environment.getExternalStorageDirectory();
file=新文件(目录+“/Audio”);
文件列表[]=File.listFiles();
for(int i=0;i
任何帮助都将不胜感激,谢谢!
您必须有一个自定义适配器
对任何错误提前道歉;我直接在答案中输入了这个,并没有先用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);
}
});
ListView ListView=(ListView)findViewById(R.id.song\u列表);
myList=新的ArrayList();//注意,文件列表,而不是字符串
File directory=Environment.getExternalStorageDirectory();
file=新文件(目录+“/Audio”);
文件列表[]=File.listFiles();
//您还可以使用Arrays.asList()而不是循环
for(int i=0;i
公共静态类MyFileArrayAdapter扩展了ArrayAdapter{
私人住宅;
公共MyFileArrayAdapter(上下文上下文、int-layoutId、列表文件){
超级(上下文、布局ID、文件);
mLayoutId=layoutId;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
LayoutInflater充气器=(LayoutInflater)getContext()
.getSystemService(布局\充气机\服务);
convertView=充气机。充气(mLayoutId,父项,false);
}
文件File=(文件)getItem(位置);
int fileSize=file.length();
Date fileDateTime=新日期(file.lastModified());
//在此处设置列表项视图,并填写大小和日期/时间
}
}
要在单个列表项中填充多个属性,必须使用自定义listview。谢谢,但我仍然不知道如何从文件中收集时间、日期和大小,因为它只是按名称列出文件。我想我的大脑昨天被炸了,花了一天时间基本上理解了它,现在我已经开始工作了,谢谢。
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
}
}