SDカードファイルリスト

7033 ワード

MainActivity.java
package lee.sdcard;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity {
    private ListView listView;				//    ListView
	private GridView toolbarGrid;			//   
    private TextView title;					//  -  
    private List fileName=null;	 	//    
	private List fileNum=null;	 	//               
	private List filePath=null;		//    
	private List isFile=null;		//     

    private boolean flag = true;
    private String sdCardPath;				//SD    
    private String parentPath;				//     
    
	/**        **/
	int[] menu_toolbar_image_array = { 
			R.drawable.menu_paste,
			R.drawable.controlbar_back, 
			R.drawable.menu_penselectmodel,
			R.drawable.menu_quit };
	
	/**        **/
	String[] menu_toolbar_name_array = { "   ", "  ", "  ", "  " };
    
    
    public void toast(String msg){
    	Toast.makeText(this, msg, 1).show();
    }
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        

        if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
        
        	toast("Sd    ");
        }
    	sdCardPath=Environment.getExternalStorageDirectory().getPath();
    	
//    	File fff=new File(sdCardPath+"/test/ddd");
//    	if(!fff.exists())fff.mkdirs();
    	
    	
        listView=(ListView) findViewById(R.id.list_view);
        title=(TextView) findViewById(R.id.title2);
        
        
        getFileDir(sdCardPath);
        
    
        
    	
		//        Toolbar
		toolbarGrid = (GridView) findViewById(R.id.filedir_toolbar);		//     GridView  
		toolbarGrid.setNumColumns(4);				//       

		toolbarGrid.setAdapter(getMenuAdapter(menu_toolbar_name_array,menu_toolbar_image_array));//     Adapter。  getMenuAdapter    MAP  
	
		/**          **/
		toolbarGrid.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView> arg0, View arg1, int arg2,long arg3) {
				switch (arg2) {
				case 0:	//  
				    getFileDir(sdCardPath);
					break;
					
				case 1:	//  
							getFileDir(parentPath);
							title.setText("  :"+parentPath);
					break;
				case 2:
					// TODO Auto-generated method stub
					
					
					break;
				case 3:		
					MainActivity.this.finish();
					break;
				}
			}
		});
        
        
        
        
        
        
    }
    
    /**
	 *     Adapter
	 * @param menuNameArray   
	 * @param imageResourceArray   
	 * @return SimpleAdapter
	 */
	private SimpleAdapter getMenuAdapter(String[] menuNameArray,int[] imageResourceArray) {
		ArrayList> data = new ArrayList>();
		for (int i = 0; i < menuNameArray.length; i++) {
			HashMap map = new HashMap();
			map.put("itemImage", imageResourceArray[i]);
			map.put("itemText", menuNameArray[i]);
			data.add(map);
		}
		SimpleAdapter simperAdapter = new SimpleAdapter(
				this,					//   
				data,					//   
				R.layout.item_menu, 	//     
				new String[] { "itemImage", "itemText" },			//          
				new int[] { R.id.item_image, R.id.item_text });		//         
		return simperAdapter;
	}
    
	/**
	 *           
	 * @param path   
	 */
	private void getFileDir(String path) {
		
		File f = new File(path);		//       
		if(!path.equals(sdCardPath)){	//      SD    
			parentPath = f.getParent();	//                  
		}else
			parentPath = sdCardPath;	//       
		   
		   
		   
		//         List
		fileName = new ArrayList();
		fileNum = new ArrayList();
		filePath = new ArrayList();
		isFile = new ArrayList();


		File file=new File(path);	//         
		int fileSize = file.list().length;	//             
		
		//          
		for(int i=0;i> list =new ArrayList>();
		for(int i=0;i map =new HashMap();
			
			map.put("fileName", fileName.get(i));
			map.put("filePath", filePath.get(i));
			map.put("fileNum", fileNum.get(i));
			
			//          ,       
			if(isFile.get(i)){	
				map.put("fileImage",  R.drawable.image_folder);
				map.put("isFileImage", R.drawable.list_icon);
			}else if(fileName.get(i).endsWith(".jpg")){
				map.put("fileImage",  R.drawable.imagefile);
				map.put("isFileImage", R.drawable.list_icon);
			}
			list.add(map);
		}
		
		
		SimpleAdapter adapter=new SimpleAdapter(MainActivity.this,
				list, 
				R.layout.filedir_item,
				str,
				new int[]{R.id.item_image,R.id.item_name,R.id.item_icon,R.id.item_num});
	
		listView.setAdapter(adapter);
		
		listView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView> parent, View view,int position, long id) {
		     
				Map map=(Map) parent.getItemAtPosition(position);	//      Item      	   
				getFileDir(map.get("filePath").toString());	//         
				title.setText("  :"+map.get("filePath").toString());	//      
			}
		});
	}

	

	/**
	 *        ,  KB/MB/GB
	 * @param size
	 * @return	         
	 */
    private String formatSize(long size) {
        long SIZE_KB = 1024;
        long SIZE_MB = SIZE_KB * 1024;
        long SIZE_GB = SIZE_MB * 1024;
        
		if(size < SIZE_KB) {   
			return  String.format( "%d B" , (int) size);   
		} else if(size < SIZE_MB) {   
			return  String.format( "%.2f KB" , (float)size / SIZE_KB);    
		} else if(size < SIZE_GB) {   
			return  String.format( "%.2f MB" , (float)size / SIZE_MB);   
		} else {   
			return  String.format( "%.2f GB" , (float)size / SIZE_GB);   
		}   
	} 
	
	
	
	
//	@Override
//	public boolean onKeyDown(int keyCode, KeyEvent event) {
//		if(keyCode==KeyEvent.KEYCODE_BACK){
//			if(parentPath!=null)
//		    getFileDir(parentPath);
//		 	return true;
//		}
//		
//		
//		return super.onKeyDown(keyCode, event);
//	}
}