|
自定义Adapter对象
前面的范例示范了如何运用ListActivity及java I/O来查找根目录下的所有文件,其中使用了setListAdapter()这个方法来将存放文件信息的ArrayAdapter设置给ListView。
Android API提供的ArrayAdapter对象只允许存入String数组或List对象,所以在显示文件列表时,只能以一段字符串来显示文件的名称,如果要同时显示文件夹或文件的图标,以及文件名称,甚至是文件类型、大小等信息,则必须自定义一个实现(Implement)Adapter Interface的对象,就可以自定义想要呈现的Layout,达到同时显示图片文件ICON与多个文字信息的效果。
Android API中提供了BaseAdapter(Android.widget.BaseAdapter)对象,只要继承此对象就可以实现出属于自己的Adapter。本范例将制作一个美化版的文件资源管理器,可依类型来显示文件夹或文件的图标,范例中将一并示范如何制作在手机上打开文件的功能。
实现此范例时,须先准备文件图标的ICON图片文件,并存放在 /res/drawable/文件夹下,图片文件路径如下:
Java代码: /res/drawable/back01.png: 回到根目录的图标
/res/drawable/back02.png: 回到上一层的图标
/res/drawable/doc.png: 文件的图标
/res/drawable/folder.png: 文件夹的图标
复制代码效果图:
程序中使用自定义的MyAdapter来设置显示的数据,传入存储文件名称与文件路径的两个List对象,使用setListAdapter()将数据设置给ListView。
当用户单击item时,onListItemClick()会被触发,此时,程序会自行判断item是文件夹还是文件。是文件夹的话,就展开下一层的目录;但如果是文件的话,则运行自定义的openFile()。
在openFile()这个方法中,会先取得文件的MIME TYPE,系统会依传入的MIME TYPE来决定要如何打开文件,如果无法判断,则直接跳出应用程序行表,让用户选择要用哪一个程序来打开。
|
|