论坛首页 移动开发技术论坛

文件浏览器

浏览 1576 次
锁定老帖子 主题:文件浏览器
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-01-21   最后修改:2010-06-17

[代码 步骤]

1. 定义所需界面 main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="bottom"
    >
<Button
	android:id="@+id/previous"  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text=" Back "
    android:gravity="right"
    />
 <TextView
	android:id="@+id/path"  
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:singleLine="true"
    />
</LinearLayout>
<ListView
	android:id="@+id/list"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
</LinearLayout>

 

 

 

2. 定义一些后面用到的字符串常量

public final static String FILE_QUERY = "file_query";
	
	public final static String FILE_NAME = "name";
	
	public final static String FILE_TYPE = "type";
	public final static String FILE_TYPE_FILE = "file";
	public final static String FILE_TYPE_DIRECTORY = "directory";

 

 

 

3. 定义存放查询结果的数据结构

//1. 定义
List<Map<String,String>> value;

//2. 初始化
value = new ArrayList<Map<String, String>>();

 

 

 

4. 定义与文件有关的变量 用于存放结果

//存放 查询目标
String target="";

//存放 查询目标的上级目录
String parent="";

 

 

5. 定义方法 用于查询目标的子文件/目录

public String updateNext(String s){
    	parent = target;
    	target += "/" + s;
    	
    	return target;
    }


public List<Map<String,String>> getNextList(String s){
    	String string = updateNext(s);
    	
    	if(checkIsFile(string)){
    		
    		//string 就是你所需要的文件
    		
    		string = updatePrevious();
    	}
    	
    	return list(string);
    }

 

6. 定义方法 用于查询目标的上级目录

public String updatePrevious(){
    	target = parent;
    	
    	File file = new File(parent);
    	parent = file.getParent();
    	
    	return target;
    }


public List<Map<String,String>> getPreviousList(){
    	String string = updatePrevious();
    	
    	return list(string);
    }

 

7. 注册查询事件: 当单击ListView 中某项 查询子文件/子目录 并刷新结果

list.setOnItemClickListener(new OnItemClickListener(){
    		@Override
    		public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    				long arg3) {
    			// TODO Auto-generated method stub
    			String s = value.get((int)arg3).get("name");
    			
    			value = getNextList(s);
    			
    			adapter.notifyDataSetChanged();
    			
    		}
            });

 

 

 

8. 注册查询事件: 当返回Button时候 返回上级目录 并刷新结果

previous.setOnClickListener(new OnClickListener(){
			public void onClick(View v) {
				// TODO Auto-generated method stub
				value = getPreviousList();
				
				adapter.notifyDataSetChanged();
			}
        });

 

 

done!

 

论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics