-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfilechooser.lua
67 lines (63 loc) · 1.88 KB
/
filechooser.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import "android.widget.ArrayAdapter"
import "android.widget.LinearLayout"
import "android.widget.TextView"
import "java.io.File"
import "android.widget.ListView"
import "android.app.AlertDialog"
function ChoiceFile(StartPath,callback)
--创建ListView作为文件列表
lv=ListView(activity).setFastScrollEnabled(true)
--创建路径标签
cp=TextView(activity)
lay=LinearLayout(activity).setOrientation(1).addView(cp).addView(lv)
ChoiceFile_dialog=AlertDialog.Builder(activity)--创建对话框
.setTitle("选择文件")
.setView(lay)
.show()
adp=ArrayAdapter(activity,android.R.layout.simple_list_item_1)
lv.setAdapter(adp)
function SetItem(path)
path=tostring(path)
adp.clear()--清空适配器
cp.Text=tostring(path)--设置当前路径
if path~="/" then--不是根目录则加上../
adp.add("../")
end
ls=File(path).listFiles()
if ls~=nil then
ls=luajava.astable(File(path).listFiles()) --全局文件列表变量
table.sort(ls,function(a,b)
return (a.isDirectory()~=b.isDirectory() and a.isDirectory()) or ((a.isDirectory()==b.isDirectory()) and a.Name<b.Name)
end)
else
ls={}
end
for index,c in ipairs(ls) do
if c.isDirectory() then--如果是文件夹则
adp.add(c.Name.."/")
else--如果是文件则
adp.add(c.Name)
end
end
end
lv.onItemClick=function(l,v,p,s)--列表点击事件
项目=tostring(v.Text)
if tostring(cp.Text)=="/" then
路径=ls[p+1]
else
路径=ls[p]
end
if 项目=="../" then
SetItem(File(cp.Text).getParentFile())
elseif 路径.isDirectory() then
SetItem(路径)
elseif 路径.isFile() then
callback(tostring(路径))
ChoiceFile_dialog.hide()
end
end
SetItem(StartPath)
end
--ChoiceFile(StartPath,callback)
--第一个参数为初始化路径,第二个为回调函数
--原创