Android编写文件浏览器简单实现
短信预约 -IT技能 免费直播动态提醒
有时候我们保存文件总会用到文件浏览器功能.那么今天博主带大家做一个。
那么开始,浏览文件,我们就需要写一个文件工具类。
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.util.Log;
public class FileUtils {
public static List<Map<String,Object>> GetPathFilsList(String path) {
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
List<Map<String,Object>> filelist = new ArrayList<Map<String,Object>>();
try {
String[] Files = new File(path).list();
for(String file : Files){
Map<String, Object> map = new HashMap<String, Object>();
if(new File(path+file).isDirectory()){
map.put("isDirectory",2);
map.put("fileName", file);
list.add(map);
}else {
map.put("isDirectory", 1);
map.put("fileName", file);
filelist.add(map);
}
}
list.addAll(filelist);
return list;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return null;
}
}
}
这里会将文件和文件夹区分出来,便于显示区分。
之后我们需要用到一个适配器,用于显示这些数据的ListView
private class FileBrowserAdapter extends BaseAdapter{
private List<Map<String, Object>> fileList;
private Context context;
public FileBrowserAdapter(Context Context,
List<Map<String, Object>> fileList) {
this.fileList = fileList;
this.context = context;
}
@Override
public int getCount() {
return fileList == null ? 0 : fileList.size();
}
@Override
public Object getItem(int position) {
return fileList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@SuppressLint("InflateParams")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater mInflater = LayoutInflater
.from(getApplicationContext());
View view = null;
view = mInflater.inflate(R.layout.file_list_item, null);
ImageView image = (ImageView) view
.findViewById(R.id.file_list_item_image);
if (Integer
.parseInt(fileList.get(position).get("isDirectory") + "") == 2)
image.setImageResource(R.drawable.folder);
else if (Integer.parseInt(fileList.get(position).get("isDirectory")
+ "") == 1)
image.setImageResource(R.drawable.documents);
TextView textView = (TextView) view
.findViewById(R.id.file_list_item_testview);
textView.setTextColor(Color.BLACK);
textView.setText(fileList.get(position).get("fileName") + "");
return view;
}
}
最后我们需要实现这些
dir = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/";
fileListView = (ListView) findViewById(R.id.file_listview);
listItemClickListener = new FileListItemClickListener();
// //设置点击事件
fileListView.setOnItemClickListener(listItemClickListener);
fileList = FileUtils.GetPathFilsList(dir);
if (new File(dir).getParent() != null) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("isDirectory", 0);
map.put("fileName", new File(dir).getParent());
fileList.add(0, map);
}
FileBrowserAdapter phoneFileBrowserAdapter = new FileBrowserAdapter(
getApplicationContext(), fileList);
fileListView.setAdapter(phoneFileBrowserAdapter);
效果图:
您可能感兴趣的文章:Android中调用系统的文件浏览器及自制简单的文件浏览器微信或手机浏览器在线显示office文件(已测试ios、android)读写Android中assets目录下的文件的方法详解Android如何遍历特定目录下所有文件Android遍历所有文件夹和子目录搜索文件读取android根目录下的文件或文件夹实例Android 将文件下载到指定目录的实现代码Android编程实现将压缩数据库文件拷贝到安装目录的方法Android开发实现读取assets目录下db文件的方法示例Android编程实现简单文件浏览器功能
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341