简易文件管理器实现

简易文件管理器实现:
public class LookFilesActivity extends Activity {
	private ListView mList;
	private TextView mPathTxt;
	private ImageView mBackImg;
	ListAdapter adatper;
//	private File file = Environment.getExternalStorageDirectory();
	private File file = new File("/");
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.lookfile_list_layout);
		mPathTxt = (TextView) findViewById(R.id.path);
		mBackImg = (ImageView) findViewById(R.id.file_back_img);
		
		mList = (ListView) findViewById(R.id.file_listview);
		adatper = new ListAdapter(this);
		adatper.refishData(getData(file));
		mList.setAdapter(adatper);
		
		/*File myFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/AVI"); // 在目录下创建文件夹
		Mylog.d(""+myFile.mkdir());*/
		mList.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				ListAdapter adapter = (ListAdapter) parent.getAdapter();
				File file = (File) adapter.getItem(position);
				if(file.isDirectory()){  //是目录则更新listview数据源
					adapter.refishData(getData(file));
					mPathTxt.setText(file.getAbsolutePath());  // 显示当前文件的全路径
				}else{          //是文件则隐式调用打开
					startIntent(file);
				}
			}
		});
		
		
		mBackImg.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				File file = new File((String) mPathTxt.getText());  // 得到当前fiel
				backBtnListener(file);
				mPathTxt.setText(file.getParent());
			}
		});
	}
	
	/*
	 * 返回键
	 */
	public void backBtnListener(File file){
		String parentFile = file.getParent();
	//	Mylog.e(parentFile);
		if(parentFile != null){  //说明有父目录,将于父目录处在同级的文件作为数据源
			File files = new File(parentFile);
			ArrayList<File>   listFile = getData(files);
			adatper.refishData(listFile);
		}else{
			LookFilesActivity.this.finish();
		}
	}
	
	
	/*
	 *点击每一项执行的代码    如果是文件执行打开文件操作
	 */
	public void startIntent(File file){
		 String fileName = file.getName();
	//	 Mylog.i(file.getAbsolutePath());
		 if(fileName.endsWith(".png") || fileName.endsWith(".jpg")){
			Intent intent = new Intent("android.intent.action.VIEW");
			intent.addCategory("android.intent.category.DEFAULT");
			intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			Uri uri = Uri.fromFile(file);
			intent.setDataAndType(uri, "image/*");
			startActivity(intent);
		} else if (fileName.endsWith(".mp3")) {
			String mp3FileDir = "file://";
			Uri uri = Uri.parse(mp3FileDir + file.getAbsolutePath());
			Intent intent = new Intent(Intent.ACTION_VIEW);
			intent.setDataAndType(uri, "audio/mp3");
			startActivity(intent);
		}
	}
	 
	
	
	/**
	 * 设置适配器的数据源
	 * 将处在同一个层级的文件作为数据源设置给listview
	 * @param parentFilePath
	 * @return
	 */
	public ArrayList<File> getData(File root) {
		ArrayList<File> mData = new ArrayList<File>();
		File[] parentFileList = root.listFiles();
		if (parentFileList != null) {
			for (int i = 0; i < parentFileList.length; i++) {
				File file = parentFileList[i];
				mData.add(file);
			}
		}
		return mData;
	}

	/*
	 * listview适配器
	 */
	public class ListAdapter extends BaseAdapter{
		ArrayList<File> mData = new ArrayList<File>();
		private LayoutInflater mInflater;
		private Context mContext;
		
		public ListAdapter(Context context){
			this.mContext = context;
			mInflater = LayoutInflater.from(context);
		}
		
		public void refishData(ArrayList<File> data){
			this.mData = data;
			notifyDataSetChanged();   //刷新数据
		}

		@Override
		public int getCount() {
			return mData.size();
		}

		@Override
		public Object getItem(int position) {
			return mData.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			Holder holer = new Holder();
			View v;
			if(convertView  == null){
				convertView = mInflater.inflate(R.layout.lookfile_item_layout, null);
				holer.fileNameTxt = (TextView) convertView.findViewById(R.id.file_name_txt);
				holer.timeTxt = (TextView) convertView.findViewById(R.id.file_create_time_txt);
				holer.sizeTxt = (TextView) convertView.findViewById(R.id.file_size_txt);
				holer.classImg = (ImageView) convertView.findViewById(R.id.file_img);
				convertView.setTag(holer);
			}else{
				holer =  (Holder) convertView.getTag();
			}
			
			File itemFile = mData.get(position);
			
			if(itemFile.isDirectory()){   //如果是文件夹
				holer.classImg.setImageResource(R.drawable.filesystem_icon_folder);
			}else if(itemFile.isFile()){ //如果是文件
				if(itemFile.getAbsolutePath().endsWith(".mp3")){  //如果是mp3文件
					holer.classImg.setImageResource(R.drawable.vdieo_icon);
				}else if(itemFile.getAbsolutePath().endsWith(".jpg")){
					holer.classImg.setImageResource(R.drawable.filesystem_grid_icon_zip);
				}else{
					holer.classImg.setImageResource(R.drawable.filesystem_grid_icon_text);
				}
			}
			
			holer.fileNameTxt.setText(itemFile.getName());
			holer.timeTxt.setText(new SimpleDateFormat("yyyy/MM/dd HH:mm").format(itemFile.lastModified()));  // 设置最近访问文件的时间
			
			long fileSize = itemFile.length();
			if(fileSize > 1024*1024) {   //处理文件大小
                float size = fileSize /(1024f*1024f);
                holer.sizeTxt.setText(new DecimalFormat("#.00").format(size) + "MB");
            } else if(fileSize >= 1024) {
                float size = fileSize/1024;
                holer.sizeTxt.setText(new DecimalFormat("#.00").format(size) + "KB");
            } else {
            	holer.sizeTxt.setText(fileSize + "B");
            }
			
			return convertView;
		}
		
		class Holder{
			TextView fileNameTxt,timeTxt,sizeTxt;
			ImageView classImg;
		}
	}
	
	
}


效果图:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值