结对项目——本地电子书的导入

结对项目中对本地SD卡电子书的导入
从SD卡中获取文件并判断文件的类型从而实现对电子书的导入

private BookManager bookManager;
	private File rootDir;
	private EditText filePath;
	private XListView mListView;
	private Handler mHandler;
	
	
   
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.import_book);
		initView();
	}

	private void initView() {
		 mHandler = new Handler();
		bookManager = new BookManager(this);
		mListView = (XListView) findViewById(R.id.listView);
		mListView.setPullRefreshEnable(true);
        mListView.setPullLoadEnable(true);
        mListView.setAutoLoadEnable(true);
        mListView.setXListViewListener(this);
        mListView.setRefreshTime(getTime());
		filePath = (EditText) findViewById(R.id.filePath);
		// SDCard作为根目录
		if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
			rootDir = Environment.getExternalStorageDirectory();
		} else {
			rootDir = Environment.getRootDirectory();
		}// mnt/sdcard
		loadData(rootDir);
		mListView.setOnItemClickListener(new OnItemClickListener() {
			
			public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
				HashMap map = (HashMap) parent.getItemAtPosition(position);
				File selectFile = (File) map.get("file");
				if (selectFile.isDirectory()) {// 是文件夹
					loadData(selectFile);
				} else if (selectFile.exists()) {
					if (selectFile.length() < 1) {
						ToastUtils.toast(ImportBook.this, "此文件是无效文件");
						return;
					}
					Book book = new Book(selectFile.getName(), selectFile.getAbsolutePath(), new Date(), 0, "0.00%");
					bookManager.save(book);
					Intent intent = new Intent();
					ImportBook.this.setResult(RESULT_OK, intent);
					ImportBook.this.finish();
				} else {
					ToastUtils.toast(ImportBook.this, "文件不存在");
				}
			}
		});
		
	}

	// 加载数据
	private void loadData(File file) {
		File[] files = FileUtils.read(file);
		Log.d(TAG, "files.length:" + files.length);
		ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();

		if (!rootDir.getAbsolutePath().equals(file.getAbsolutePath())) {
			HashMap<String, Object> map = new HashMap<String, Object>();
			map.put("image", R.drawable.file);
			map.put("file", file.getParentFile());
			map.put("name", "返回上一级...");
			data.add(map);
		}

		for (int i = 0; i < files.length; i++) {
			HashMap<String, Object> map = new HashMap<String, Object>();
			String fileName = files[i].getName();

			if (files[i].isDirectory()) {// 文件
				map.put("image", R.drawable.file);
			} else if (files[i].isFile()) {
				if (fileName.endsWith(".txt")) {
					map.put("image", R.drawable.txt);
				} else if (fileName.endsWith(".zip")) {
					map.put("image", R.drawable.zip);
				} else if (fileName.endsWith(".xml")) {
					map.put("image", R.drawable.xml);
				}
			}
			map.put("file", files[i]);
			map.put("name", fileName);
			if (files[i].listFiles() != null) {
				map.put("size", "(" + files[i].listFiles().length + ")");
			} else if (files[i].isFile()) {
			} else {
				map.put("size", "(0)");
			}
			map.put("time", DateUtils.format(files[i].lastModified()));
			data.add(map);
		}

		SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.import_book_item, new String[] { "image", "name", "size", "time" }, new int[] { R.id.image, R.id.name,
				R.id.size, R.id.time });
		mListView.setAdapter(adapter);
		filePath.setText("路径:" + file.getAbsolutePath());
		Log.d(TAG, "data.size():" + data.size());
		
	}

界面

posted @ 2017-06-18 15:04  夜深人静时  阅读(170)  评论(0编辑  收藏  举报