FileBrowser.java
public class FileBrowser {
private Context context;
private List<String> items=null;
private List<String> paths=null;
private String rootPath="/";
private TextView mPath;
private View view;
private ListView list;
private FileAdapter m_FileAdapter;
private String selectedFilePath = "";
public String getSelectedFilePath() {
return selectedFilePath;
}
public void setSelectedFilePath(String selectedFilePath) {
this.selectedFilePath = selectedFilePath;
}
public View getFileListView(){
return view;
}
public FileBrowser(Context context){
this.context = context;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.filelist, null);
mPath = (TextView)view.findViewById(R.id.mPath);
mPath.setTextColor(context.getResources().getColor(R.color.text_color));
list = (ListView)view.findViewById(R.id.filelist);
getFileDir(rootPath);
}
private void getFileDir(String filePath){
mPath.setText(filePath);
items=new ArrayList<String>();
paths=new ArrayList<String>();
File f=new File(filePath);
File[] files=f.listFiles();
if(!filePath.equals(rootPath))
{
items.add("goroot");
paths.add(rootPath);
items.add("goparent");
paths.add(f.getParent());
}
for(int i=0;i<files.length;i++)
{
File file=files[i];
items.add(file.getName());
paths.add(file.getPath());
}
m_FileAdapter = new FileAdapter(context,items,paths);
list.setAdapter(m_FileAdapter);
list.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
File file=new File(paths.get(position));
if(file.canRead()){
if (file.isDirectory()){
getFileDir(paths.get(position));
}else{
ViewHolder vHollder = (ViewHolder) view.getTag();
for(ViewHolder v : m_FileAdapter.getVHs()){
v.cBox.setChecked(false);
v.cBox.setVisibility(View.GONE);
}
for(int i : m_FileAdapter.getIsSelected().keySet()){
m_FileAdapter.getIsSelected().put(i, false);
}
for(int i : m_FileAdapter.getIsVisibility().keySet()){
m_FileAdapter.getIsVisibility().put(i, View.GONE);
}
vHollder.cBox.setVisibility(View.VISIBLE);
m_FileAdapter.getIsVisibility().put(position, View.VISIBLE);
vHollder.cBox.setChecked(true);
m_FileAdapter.getIsSelected().put(position, vHollder.cBox.isChecked());
if(mPath.getText().toString().equals(rootPath)){
setSelectedFilePath(mPath.getText().toString() + vHollder.text.getText().toString());
}else{
setSelectedFilePath(mPath.getText().toString() + File.separator + vHollder.text.getText().toString());
}
Toast.makeText(context, getSelectedFilePath(), Toast.LENGTH_SHORT).show();
}
}else{
LinearLayout lay = new LinearLayout(context);
lay.setOrientation(LinearLayout.HORIZONTAL);
ImageView image = new ImageView(context);
TextView text = new TextView(context);
text.setTextColor(context.getResources().getColor(R.color.text_color));
text.setTextSize(16);
text.setText("很抱歉您的权限不足,无法读取文件内容!");
Toast toast = Toast.makeText(context, text.getText().toString(), Toast.LENGTH_SHORT);
image.setImageResource(android.R.drawable.ic_lock_idle_alarm);
lay.addView(image);
lay.addView(text);
toast.setView(lay);
toast.show();
}
}
});
}
}
FileAdapter.java
public class FileAdapter extends BaseAdapter{
private LayoutInflater mInflater;
private Bitmap mIcon1;
private Bitmap mIcon2;
private Bitmap mIcon3;
private Bitmap mIcon4;
private List<String> items;
private List<String> paths;
private Map<Integer, Boolean> isSelected;
private Map<Integer, Integer> isVisibility;
public Map<Integer, Integer> getIsVisibility() {
return isVisibility;
}
private List<ViewHolder> VHs = new ArrayList<ViewHolder>();
private Context context;
public Map<Integer, Boolean> getIsSelected() {
return isSelected;
}
public void setIsSelected(Map<Integer, Boolean> isSelected) {
this.isSelected = isSelected;
}
public FileAdapter(Context context,List<String> it,List<String> pa){
this.context = context;
mInflater = LayoutInflater.from(context);
if( it != null && it.size() > 0){
isSelected = new HashMap<Integer, Boolean>();
isVisibility = new HashMap<Integer, Integer>();
for (int i = 0; i < it.size(); i++) {
isSelected.put(i, false);
isVisibility.put(i, View.GONE);
}
}
items = it;
paths = pa;
mIcon1 = BitmapFactory.decodeResource(context.getResources(),
R.drawable.backroot);
mIcon2 = BitmapFactory.decodeResource(context.getResources(),
R.drawable.backparent);
mIcon3 = BitmapFactory.decodeResource(context.getResources(),
R.drawable.folder);
mIcon4 = BitmapFactory.decodeResource(context.getResources(),
R.drawable.doc);
}
@Override
public int getCount(){
return items.size();
}
@Override
public Object getItem(int position){
return items.get(position);
}
@Override
public long getItemId(int position){
return position;
}
@Override
public View getView(int position,View convertView,ViewGroup parent){
ViewHolder holder;
if(convertView == null){
convertView = mInflater.inflate(R.layout.file_row, null);
holder = new ViewHolder();
VHs.add(holder);
holder.text = (TextView) convertView.findViewById(R.id.filetext);
holder.text.setTextColor(context.getResources().getColor(R.color.text_color));
holder.icon = (ImageView) convertView.findViewById(R.id.fileicon);
holder.cBox = (CheckBox) convertView.findViewById(R.id.file_check);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
File f=new File(paths.get(position).toString());
if(items.get(position).toString().equals("goroot")){
holder.text.setText("返回根目录");
holder.icon.setImageBitmap(mIcon1);
holder.cBox.setChecked(isSelected.get(position));
holder.cBox.setVisibility(isVisibility.get(position));
}else if(items.get(position).toString().equals("goparent")){
holder.text.setText("返回上一级");
holder.icon.setImageBitmap(mIcon2);
holder.cBox.setChecked(isSelected.get(position));
holder.cBox.setVisibility(isVisibility.get(position));
}else{
holder.text.setText(f.getName());
if(f.isDirectory()){
holder.icon.setImageBitmap(mIcon3);
holder.cBox.setChecked(isSelected.get(position));
holder.cBox.setVisibility(isVisibility.get(position));
}else{
holder.icon.setImageBitmap(mIcon4);
holder.cBox.setChecked(isSelected.get(position));
holder.cBox.setVisibility(isVisibility.get(position));
}
}
return convertView;
}
public List<ViewHolder> getVHs() {
return VHs;
}
public final class ViewHolder
{
public TextView text;
public ImageView icon;
public CheckBox cBox;
}
}
file_row.xml(layout)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/file_items"
android:layout_width="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:paddingBottom="4dip"
android:paddingLeft="12dip"
android:paddingRight="12dip">
<ImageView android:id="@+id/fileicon"
android:layout_height="wrap_content"
android:textSize="26dip"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_below="@+id/file_items"/>
<TextView android:id="@+id/filetext"
android:layout_gravity="center_vertical"
android:layout_width="fill_parent"
android:layout_toRightOf="@id/fileicon"
android:paddingLeft="20dip"
android:layout_height="wrap_content"/>
<CheckBox android:id="@+id/file_check"
style="?android:attr/starStyle"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
android:layout_below="@+id/file_items"/>
</RelativeLayout>
分享到:
相关推荐
AndServer实现文件下载+文件浏览服务
C#操作帮助文件的一个演示实例源代码,可以浏览帮助文件、启动帮助索引、选择帮助文件类型、设置参数启动帮助文件等小功能,其实这个功能是挺实用的,一个成型的软件,不可能没有使用帮助的,这也是完善软件服务的...
调用方啊 FileOpenerDialog dlg = new FileOpenerDialog(MailDetaiAct.this, 2, fileType, path, MailDetaiAct.this); dlg.setTitle("选择附件");...文件选择dialog在关闭时会回调 OnOkClick 方法
FREEBSD 文件系统 文件浏览工具 用于读取FREEBSD 系统的原生磁盘分区格式UFS 格式的 文件读取
资源内容包含.h和.cpp文件,主要实现了打开系统目录选择文件保存路径的功能。
CAD文件浏览控件,可以浏览DWG文件。效果很不错。
打开sdcard文件夹。只显示文件夹和txt文件。过滤非txt文件。选择txt文件返回其名字。
Unity 调用Android文件资源管理器,可以选择Android手机上的图片,视频等一些列文件,并且获得相关的文件路径。直接导入Unity即可运行。测试已经通过
Java生成一个文件打开的文件选择对话框窗口,和Win系统的浏览文件窗口相似,使用Java代码模拟实现的窗口程序,相关代码如下: button.addActionListener(new ActionListener() { //按钮事件处理 public void ...
浏览文件 获取文件路径
基于Spring Boot、AngularJS、CSS3、HTML5的响应式文件浏览管理器 功能介绍: 前后端分离,方便集成到自己的熟悉语言项目中 支持选择回调,如弹框文件选择 多语言支持 支持多种文件列表布局(图标/详细列表) 多文件...
自动扫描SD卡上所有的txt文件,在list中显示,用户可勾选需要的文件,点击导入之后会返回文件路径。 类似于图片查找,只需要在activity中使用调用扫描文件就可以方便的使用
WPF自定义控件: 1、文件路径选择 2、文件夹选择
Android的文件浏览器/文件选择器,可以集成到应用程序中,从内部/外部存储中浏览/选择文件。
WPF 浏览PDF 文件WPF 浏览PDF 文件
支持北大方正二扫(s2、s72、s92、ps2、mps文件格式
支持文件浏览,文件夹目录树状分级,文件价列表显示等等
WDL文件阅读工具用于文件浏览 WDL文件阅读工具用于文件浏览 WDL文件阅读工具用于文件浏览WDL文件阅读工具用于文件浏览 WDL文件阅读工具用于文件浏览 WDL文件阅读工具用于文件浏览 WDL文件阅读工具用于文件浏览 WDL...
WinForm本地文件浏览 可以浏览本地桌面、任意盘符文件夹.
16进制文件浏览对话框,通过视图的方式显示文件的16进制值。