Android 类似于windows打开文件对话框的实现
来源:互联网 发布:手游推荐知乎 编辑:程序博客网 时间:2024/04/30 07:07
源码:
public class FileExplorerActivity extends ListActivity{private final static String FILE_TYPE = "filetype";private final static String FILE_NAME = "filename";private ListView listView;private File currentParent;private File[] currentFiles;private List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();private Stack<File> dirStack = new Stack<File>();private boolean isRoot = true;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);listView = getListView();listView.setBackgroundColor(Color.WHITE);listView.setCacheColorHint(Color.WHITE);setContentView(listView);listView.setOnItemClickListener(itemClickListener);init();}private void init(){File root = Environment.getExternalStorageDirectory();if (!root.exists())return;currentParent = root;currentFiles = root.listFiles();sortFiles(currentFiles);dirStack.push(currentParent);inflateListView(currentFiles);isRoot = true;}private void sortFiles(File[] files){Arrays.sort(files, new Comparator<File>(){public int compare(File paramFile1, File paramFile2){return (int) (paramFile2.lastModified() - paramFile1.lastModified());}});}private OnItemClickListener itemClickListener = new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id){if (position == 0){up2Parent();return;}int pos = position;if (isRoot)isRoot = false;else--pos;if (currentFiles[pos].isFile())return;File[] tmp = currentFiles[pos].listFiles();sortFiles(tmp);currentParent = currentFiles[pos];currentFiles = tmp;dirStack.push(currentParent);inflateListView(currentFiles);}};private void up2Parent(){if (!dirStack.isEmpty() && !isRoot){dirStack.pop();if (dirStack.size() == 1)isRoot = true;if (!dirStack.isEmpty()){currentParent = dirStack.peek();currentFiles = currentParent.listFiles();inflateListView(currentFiles);}}}private void inflateListView(File[] files){if (files == null)return;listItems.clear();Map<String, Object> listItem;if (!isRoot){listItem = new HashMap<String, Object>();listItem.put(FILE_TYPE, R.drawable.file_up);listItem.put(FILE_NAME, "..");listItems.add(listItem);}for (int i = 0; i < files.length; i++){listItem = new HashMap<String, Object>();if (files[i].isDirectory())listItem.put(FILE_TYPE, R.drawable.folder);elselistItem.put(FILE_TYPE, R.drawable.file);listItem.put(FILE_NAME, files[i].getName());listItems.add(listItem);}SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems, R.layout.fileselectoritem, new String[] { FILE_TYPE, FILE_NAME }, new int[] { R.id.txtTypeIcon, R.id.txtFileName });listView.setAdapter(simpleAdapter);}@Overridepublic void onBackPressed(){if (isRoot)super.onBackPressed();elseup2Parent();}}
布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <ImageView android:id="@+id/txtTypeIcon" android:layout_width="27.0dip" android:layout_height="30.0dip" android:layout_margin="5.0dip"/> <TextView android:id="@+id/txtFileName" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1.0" android:textColor="@android:color/black"/></LinearLayout>
- Android 类似于windows打开文件对话框的实现
- 扩展windows的打开文件的对话框
- Winform 类似于WINDOWS的选择文件夹对话框
- windows api打开文件对话框
- android实现 仿iphoneDialog实现类似于iphone对话框样式
- C#对话框 保存对话框、打开对话框的实现、颜色文件框、字体文本框
- 如何实现文件的打开与保存对话框(JFileChooser)
- Access利用Windows API打开文件对话框
- Android 打开手机QQ,实现类似于客服功能
- 自定义的打开文件对话框
- 安全的打开文件对话框
- 文件对话框的打开方式
- unity 文件对话框的打开
- 在Windows Media Player的打开对话框中打开几乎所有的媒体文件(注册表文件)
- Android开发 打开文件 选择文件对话框
- Android开发 打开文件 选择文件对话框
- Android开发 打开文件 选择文件对话框
- Android开发 打开文件 选择文件对话框
- 学会订阅实时书签,让信息随心而动!
- AVL 平衡二叉树
- win7不能删除文件夹(您需要来自administrators的权限才能对此文件夹进行更改)
- 关于hudson上的job迁移-(job migration of hudson)
- 【flex4.6将移动开发进行到底】第一章第一节建立手机项目
- Android 类似于windows打开文件对话框的实现
- GridView支持复制与粘贴
- spring3.x中jar包的说明
- The War&&贪心算法
- 程序员必知的八大排序
- SQLHelper助手
- effective java(枚举和注解)
- memcache说明
- SSH框架的dtd文件