android 文件选择对话框,选择文件对话框

我创造FolderLayout了可能对你有所帮助。这个链接对我有帮助

folderview.xml<?xml  version="1.0" encoding="utf-8"?>

android:orientation="vertical" android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_width="match_parent" android:layout_height="wrap_content">

android:layout_height="wrap_content" android:id="@+id/list">

FolderLayout.javapackage com.testsample.activity;

public class FolderLayout extends LinearLayout implements OnItemClickListener {

Context context;

IFolderItemListener folderListener;

private List item = null;

private List path = null;

private String root = "/";

private TextView myPath;

private ListView lstView;

public FolderLayout(Context context, AttributeSet attrs) {

super(context, attrs);

// TODO Auto-generated constructor stub

this.context = context;

LayoutInflater layoutInflater = (LayoutInflater) context                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View view = layoutInflater.inflate(R.layout.folderview, this);

myPath = (TextView) findViewById(R.id.path);

lstView = (ListView) findViewById(R.id.list);

Log.i("FolderView", "Constructed");

getDir(root, lstView);

}

public void setIFolderItemListener(IFolderItemListener folderItemListener) {

this.folderListener = folderItemListener;

}

//Set Directory for view at anytime

public void setDir(String dirPath){

getDir(dirPath, lstView);

}

private void getDir(String dirPath, ListView v) {

myPath.setText("Location: " + dirPath);

item = new ArrayList();

path = new ArrayList();

File f = new File(dirPath);

File[] files = f.listFiles();

if (!dirPath.equals(root)) {

item.add(root);

path.add(root);

item.add("../");

path.add(f.getParent());

}

for (int i = 0; i 

File file = files[i];

path.add(file.getPath());

if (file.isDirectory())

item.add(file.getName() + "/");

else

item.add(file.getName());

}

Log.i("Folders", files.length + "");

setItemList(item);

}

//can manually set Item to display, if u want

public void setItemList(List item){

ArrayAdapter fileList = new ArrayAdapter(context,

R.layout.row, item);

lstView.setAdapter(fileList);

lstView.setOnItemClickListener(this);

}

public void onListItemClick(ListView l, View v, int position, long id) {

File file = new File(path.get(position));

if (file.isDirectory()) {

if (file.canRead())

getDir(path.get(position), l);

else {//what to do when folder is unreadable

if (folderListener != null) {

folderListener.OnCannotFileRead(file);

}

}

} else {//what to do when file is clicked//You can add more,like checking extension,and performing separate actions

if (folderListener != null) {

folderListener.OnFileClicked(file);

}

}

}

public void onItemClick(AdapterView> arg0, View arg1, int arg2, long arg3) {

// TODO Auto-generated method stub

onListItemClick((ListView) arg0, arg0, arg2, arg3);

}}

还有一个界面,IFolderItemListener用于添加fileItem单击a时要执行的操作

IFolderItemListener.javapublic interface IFolderItemListener {

void OnCannotFileRead(File file);//implement what to do folder is Unreadable

void OnFileClicked(File file);//What to do When a file is clicked}

还有一个用于定义行的xml

row.xml<?xml  version="1.0" encoding="utf-8"?>

android:id="@+id/rowtext" android:layout_width="fill_parent"

android:textSize="23sp" android:layout_height="match_parent"/>

如何在您的应用程序中使用

在你的xml中,

folders.xml<?xml  version="1.0" encoding="utf-8"?>

android:layout_width="match_parent" android:layout_height="match_parent"

android:orientation="horizontal" android:weightSum="1">

android:layout_weight="0.35"

android:layout_width="200dp" android:id="@+id/localfolders">

在你的活动中,

SampleFolderActivity.javapublic class SampleFolderActivity extends Activity implements IFolderItemListener {

FolderLayout localFolders;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

localFolders = (FolderLayout)findViewById(R.id.localfolders);

localFolders.setIFolderItemListener(this);

localFolders.setDir("./sys");//change directory if u want,default is root

}

//Your stuff here for Cannot open Folder

public void OnCannotFileRead(File file) {

// TODO Auto-generated method stub

new AlertDialog.Builder(this)

.setIcon(R.drawable.icon)

.setTitle(

"[" + file.getName()

+ "] folder can't be read!")

.setPositiveButton("OK",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int which) {

}

}).show();

}

//Your stuff here for file Click

public void OnFileClicked(File file) {

// TODO Auto-generated method stub

new AlertDialog.Builder(this)

.setIcon(R.drawable.icon)

.setTitle("[" + file.getName() + "]")

.setPositiveButton("OK",

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog,

int which) {

}

}).show();

}}

导入所需的库。希望这些能帮到你......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值