Android入门之文件系统操作(一)简单的文件浏览器 (转)
1. import java.io.File; 2. import java.util.*; 3. 4. import android.app.Activity; 5. import android.content.Context; 6. import android.os.*; 7. import android.view.*; 8. import android.widget.*; 9. import android.widget.AdapterView.OnItemClickListener; 10. import android.widget.ImageView.ScaleType; 11. 12. public class FileBrowser extends Activity { 13. 14. private ListView mainListView=null; 15. private List<Map<String,Object>> list=null; 16. 17. public void onCreate(Bundle savedInstanceState) { 18. super.onCreate(savedInstanceState); 19. this.setTitle("文件浏览器"); 20. mainListView=new ListView(this); 21. setContentView(mainListView); 22. 23. File file=Environment.getRootDirectory(); 24. String pathx=file.getAbsolutePath(); 25. this.setTitle(pathx); 26. //android的总目录就是"/" 27. list_init("/"); 28. } 29. 30. void list_init(String path){ 31. File file=new File(path); 32. File[] fileList=file.listFiles(); 33. list=new ArrayList<Map<String,Object>>(); 34. Map<String,Object> item; 35. item=new HashMap<String,Object>(); 36. if(path.equals("/")){ 37. item.put("ico",R.drawable.home); 38. item.put("name","总目录列表"); 39. item.put("path","/"); 40. list.add(item); 41. }else{ 42. item.put("ico",R.drawable.back); 43. item.put("name","返回上一级"); 44. item.put("path",file.getParent()); 45. list.add(item); 46. } 47. for(int i=0;i<fileList.length;i++){ 48. item=new HashMap<String,Object>(); 49. if(fileList[i].isDirectory()){ 50. if(fileList[i].list().length<1){ 51. item.put("ico",R.drawable.file1); 52. }else{ 53. item.put("ico",R.drawable.file2); 54. } 55. }else{ 56. item.put("ico",R.drawable.content); 57. } 58. item.put("name",fileList[i].getName()); 59. item.put("path",fileList[i].getAbsolutePath()); 60. list.add(item); 61. } 62. MyAdapter ma=new MyAdapter(this,list); 63. //mainListView=new ListView(this); 64. mainListView.setAdapter(ma); 65. mainListView.setOnItemClickListener(new OnItemClickListener(){ 66. public void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) { 67. if(arg2>0 && (Integer)(list.get(arg2).get("ico"))==R.drawable.content){ 68. //非文件夹图标,点击无效 69. }else{ 70. //打开下一级文件目录列表 71. list_init((String)(list.get(arg2).get("path"))); 72. } 73. } 74. }); 75. this.setTitle(path); 76. } 77. 78. public class MyAdapter extends BaseAdapter{ 79. 80. Context context=null; 81. List<Map<String,Object>> list=null; 82. 83. MyAdapter(Context context,List<Map<String,Object>> list){ 84. this.context=context; 85. this.list=list; 86. } 87. public int getCount() {return list.size();} 88. public Object getItem(int position) {return position;} 89. public long getItemId(int position) {return position;} 90. 91. public View getView(int position, View convertView, ViewGroup parent) { 92. LinearLayout returnView=new LinearLayout(context); 93. returnView.setLayoutParams(new ListView.LayoutParams(-1,-2));//注意:ListView.LayoutParams 94. //图标 95. ImageView iv=new ImageView(context); 96. LinearLayout.LayoutParams lp_iv=new LinearLayout.LayoutParams(-2,-2); 97. lp_iv.rightMargin=10; 98. iv.setLayoutParams(lp_iv); 99. iv.setScaleType(ScaleType.CENTER_INSIDE); 100. iv.setImageResource((Integer)((list.get(position)).get("ico"))); 101. returnView.addView(iv); 102. //文件名 103. TextView name=new TextView(context); 104. LinearLayout.LayoutParams lp_tv=new LinearLayout.LayoutParams(-2,-2); 105. name.setLayoutParams(lp_tv); 106. name.setTextSize(name.getTextSize()+10); 107. name.setText((String)(list.get(position).get("name"))); 108. returnView.addView(name); 109. // 110. return returnView; 111. } 112. 113. } 114. }
时间: 2024-10-26 09:57:21