|
- require "import"
) T4 G0 }1 }- v1 U4 Z - import "android.app.*"# L! s% v/ k3 K* X7 y0 |9 O
- import "android.os.*"
6 P2 @# f* u1 K t/ {2 _. l6 C - import "android.widget.*"! b$ ~! s7 U7 b# H- Y- |- H' L$ a1 f
- import "android.view.*"% v f) Q7 G# s0 S1 h, z( R
- layout={8 V$ k7 r1 T, L- L* d
- LinearLayout,, o! E" d: K, `- `- \0 y
- layout_width="fill",. h' X" Y( z: o2 ^' Y. h
- layout_height="fill",
. K1 E! U h5 j" H5 c) W3 z - orientation="vertical",
; t9 h' {2 q8 g/ ^ - {
?* m' s6 ^, q! X" B- | - LinearLayout,3 \- X, \& R6 h# @! g2 \* ]
- layout_width="fill",
0 o- E2 A$ H/ {- d7 u( x5 Y" j - layout_height="56dp",
7 k3 p: q7 J5 h: S: A$ W - {7 P# x$ R) |5 G. }, Z* m9 a
- Button,
7 A; T2 r2 x$ m. \; X, X" ^ - text="全选",3 K# a# Z/ N: K
- id="btn1",
( b y c7 r* _- q0 }0 e5 S4 O& J - },
" O& C, n7 F+ p5 t - {" {) W# P- W/ | K1 A( F2 e
- Button,
7 [' ^4 t- }! ^3 K7 W" P - text="反选",) w5 y$ ]1 B* _# p- C/ m3 E! a
- id="btn2",5 \* S- D8 r( v! k* V5 Z6 g9 M
- },
. R& L4 t" o0 H1 y# s - {
/ S/ _( C5 o- z8 y - Button,
& u4 g% F0 l) i7 X' D" w4 M - text="打印多选数据",4 e" e4 u# g' z9 f
- id="btn3",
: S$ t9 b, o8 U; m - },
! P$ c5 T9 }) {& J' c7 B; T; |) S( d - },
) X0 T S% L! _& q' J
8 u4 v. ]% Z8 a: E, g( j- 2 r% K; F# l& O: x! x6 o
- {
& b7 N; Q5 ^5 R0 u( \ - LinearLayout,
6 S2 b; b5 y& H b+ P& V2 o - layout_width="fill",0 S! ~2 D* W7 ?, a1 s; C8 y
- layout_height="56dp",& k+ [" L v" a- O0 M8 I
- {
" r% K; W9 I% ?$ w& g - Button,
; w' l7 x' _2 b' O& A - text="删除",
! H3 c4 u" h$ z1 q1 Y5 u& f4 h3 W - id="btn4",
; g( V: k" o3 c' Y# r - },+ G" v: V* y; j
- },' A- j/ c' H$ b6 E
- 9 |2 g$ D: C( `
- 8 l* v0 {: M7 l7 ~4 e
- {
h9 z c( d0 X - ListView,# b2 `1 V" T1 M
- layout_width="fill",
. ]! ?- ]) e. v0 c6 K# v - layout_height="fill",
1 `1 h# r( g$ i - id="list",* U' y/ L- \7 ^$ L
- }, w- V/ X% G' g0 |! s
- }
% p# a+ Z8 z$ k$ } - activity.setTheme(android.R.style.Theme_DeviceDefault_Light)--设置md主题5 U2 U* U! V; W1 x' }% |
- activity.setContentView(loadlayout(layout))
6 f; M, b$ y o5 K2 J
( u, C0 _* N1 a* d' `* b Y
! B1 X$ v- t: S: p2 K- --author:OpenEyez
8 [/ `- X. d3 D8 p7 L$ f. ]8 X - --功能:实现了ListView与复选框CheckBox的完美结合9 u6 O6 S% u! [2 v- @! P# @! n
- --编辑器:OpenLua+_0.5.9,Androlua5.0.7
, P" g* h' ~7 a S. e - --欢迎大家加入openlua+QQ群:1015308783% ] y# {) u; x4 o7 U, g3 H
- : S! Q6 Q$ @+ h5 W- Z9 h$ N
- item=- c* Y1 }8 e+ L, }+ E1 ~
- / B7 k# I4 o7 L0 S$ x7 i
- {: P; C8 a. b5 d: E/ Y
- LinearLayout,6 r2 \0 }+ O# w) ^( x! I
- layout_width="fill",
4 \* i4 H! o# {; f3 R1 { - layout_height="fill",; s/ y4 I/ b$ l# E' K) K
- orientation="vertical",& q1 V: H( _7 l X
- {& ~- P* w% x, v* {$ f6 J/ N
- LinearLayout,% D* t" [* Q0 C: N5 | k: U
- layout_width="fill",8 k7 t( n, d7 x% j9 u
- layout_height="100dp",
" ^+ y/ A# |# l' h - {
$ L" |- E& X. H4 M* N& X - TextView,8 s6 k* o) g# r! @% O
- layout_width="80%w",% v9 d# n5 n2 y' J M# G8 `0 D
- layout_height="100dp",
8 F" n P( |: L1 N# s3 ~( R" t - gravity="center",( f; I* L l9 [7 a2 a8 [& X
- text="HELLOWORLD",
5 h2 @6 a. f* @; q$ e) J - id="tv",
, o7 T( Y" \" Z0 `' f' X - },
( r# G8 r( o! d8 ?+ B0 X& r$ ^0 v - {+ ]1 j5 Y2 E( l6 k7 l1 R
- CheckBox,
& x! k2 u$ I3 r1 { - layout_width="wrap_content",
9 Y3 ~( [- j4 T9 y - layout_height="wrap_content",) k- N6 X% n' U/ d; M: h( m J
- focusable=false,
) \2 c* o' Y! W) ?. G - focusableInTouchMode=false,
9 g, F) n" J8 S8 Y) J - clickable=false,0 j) \/ g5 ~7 L" o7 c; E; F
- id="cb",; N9 `* @$ n6 ^# p7 a) ]# r
- },8 U* R" q9 M" I( Q+ z
- },
) g' h3 U7 a6 W) W# o6 P - }
+ _: i& Z# G7 H1 s
s/ Q8 Y1 \' l! |/ y$ Q- . j/ q; @ h3 V' K
- $ i/ J# U) A3 X
- --数据
: p, k, D7 z! u) \* i- f - datas={}
3 F/ e; m' o4 a, W* _% S
# d% R$ I* Z$ X/ C9 ?) F: x& Z- --是否开启多选模式6 f; j) o& g( ^7 O7 T
- CHOICEMODE=false
5 h! B4 J6 z0 C1 C. U, J
5 J* O% A R& b$ h9 t) t( D9 d- --适配器,要绑定数据6 C3 K! Z5 ?0 I! U1 P
- adp=LuaAdapter(activity,datas,item)
! v9 \. Y- G# |5 ^ - & w+ y8 h* m* D' g; X9 Q
$ @2 g% Q6 s! u' N6 W- `- list.setAdapter(adp)
, I. l$ k% n. ^2 l+ ^
, b `* P9 ^3 B
# P- S. W* e% D' ^3 a- --增加一点数据进去
7 |$ }* m7 c# @. {4 H( Z) { - for i=1,2000 do6 f/ v+ N+ u* C
- table.insert(datas,{tv="数据"..i,cb={checked=false,visibility=View.GONE}}). e) |3 `/ u- e& y
- end
4 z3 S( B1 n* V' ?) x- s% d2 o' F
& C/ p, ]& T4 o- ~( {8 y* w
Y# {8 \+ f4 r: i% n4 @1 l
% t1 \5 p& `3 W- 8 V7 v( }6 N& Q" H& B0 A
- --ListView的点击事件' h. _+ X- Z3 y0 D# t( ^
- list.setOnItemClickListener(AdapterView.OnItemClickListener{# A8 Q ^# x6 X) {) C% X0 v. A3 k
- onItemClick=function(parent,v,pos,id)
3 i3 O' `0 |/ r% G1 P7 n! r4 h - if CHOICEMODE then5 ]- J. P d# y% p/ t
- if datas[id]["cb"]["checked"] then
+ u" n8 ^1 D: E( m; q, E - datas[id]["cb"]["checked"]=false
& Y9 P' ]2 E7 I9 X* D4 |. } R/ b' } - else" |$ _5 ]0 g4 @7 j
- datas[id]["cb"]["checked"]=true" S8 y' J; j5 u8 R' ]: w0 z. U
- end) \: ]+ P4 A6 Z
- adp.notifyDataSetChanged()
* G& y8 a8 v- @ - end
0 [$ c# L; H5 O* ^* s! F - end
/ e6 N0 u. I' d, N b+ c+ r; U - })
- C- i" C5 Y' J8 ?+ B
* T/ w8 K. P$ h) ~' B3 @0 {- - V, |9 q; x5 D- Y% _3 ?
- , x# f# K) l) K2 A6 a" `/ v
- --ListView的长按事件7 S; v4 V* c6 x9 m: |
- list.onItemLongClick=function(l,v,p,i)( U3 M7 ~- C/ F1 ?
- if CHOICEMODE==false then" E$ @% @) d6 Y6 ^! w
- CHOICEMODE = true" \' {+ ?) h% [' j6 Z0 g
- task(1,function(). @8 R% J8 M; T# a
- for k,v ipairs(datas) do
9 N( j& P; E! O9 A - v["cb"]["visibility"]=View.VISIBLE/ ]" m, V% p- F4 K
- end# m4 P8 a3 ] {, B8 P- B5 ^. C# k; f
- adp.notifyDataSetChanged()
/ V; P. z* T C. a4 F" z: A - end)
; z9 C( B* u1 ]/ ^/ w1 i - return true
$ ?. P* S6 F- o# S - else
- T3 I& t! `) m/ z0 X- T5 @ - print("已经开启了多选模式,无需重复")5 ]0 ]7 l1 U# M% }( N
- return false6 C5 }7 N5 K5 y4 r
- end& p9 B7 s) l" r! X' f" F# C
- end
9 h, @) y# {/ B8 _1 z% u3 ]- w) g - , s# Z4 W. R% S$ }3 |! Q! E
- # z' B& K2 ~9 r6 b2 }- V# c/ N1 l
0 H9 W/ H( [. e6 a. W- --全选0 \3 M% a5 y* O
- btn1.onClick=function()
g( b% u3 o9 a - if CHOICEMODE then4 ]0 }6 C0 ]* S& s: ^4 V
- task(1,function()
9 P2 c5 a5 d* d, |9 U) a - for k,v ipairs(datas) do1 ~/ ]& g% L* E) o
- v["cb"]["checked"]=true# r6 u0 Q. v1 C
- end
0 m% y' n! Y) C/ o3 \' { - adp.notifyDataSetChanged()
, j% L3 ^" c6 i9 A- ^# q4 ~3 c( E - end)5 X2 F# L3 b/ M- K# E
- else `! D5 P3 `% P
- print("未开启多选模式,长按列表开启")! F2 L7 b& N3 Z1 u
- end5 D ]/ c% U% k( W5 B& _" a* K1 y2 A/ c
- end
$ D. m8 f( c( F
3 c5 P0 S9 D( U+ e1 P7 X6 c- . [, c. x: q* q9 {( A5 v( v
- --反选
0 a, X* x/ O* Q( ^ - btn2.onClick=function()8 s7 ~% O9 ^+ _5 p: U
- if CHOICEMODE then
; A4 G0 z; W! }. ?: d' p6 d - task(1,function()3 G+ b. g1 Q" a; s. Y5 h
- for k,v ipairs(datas) do/ ~" B$ ] M% t" B9 A7 h$ ]) z; y
- if v["cb"]["checked"] then
3 N4 }# E q1 U! d# d. s4 L - v["cb"]["checked"]=false$ [: ^: p+ k5 O' P
- else
7 P6 z2 g+ w; a) f M - v["cb"]["checked"]=true
! I% m& {$ ?6 a; }* r' r - end
. \0 f% w" r% d# Y/ I0 T3 r - end
( Z; m6 N- d H$ K - adp.notifyDataSetChanged()( ?, i3 a3 A8 k! Y5 H, D% {
- end)
5 Y6 S8 d5 ^% x5 Q$ } - else+ |! q3 |: p# l5 w8 r
- print("未开启多选模式,长按列表开启")" q+ l+ k. ~8 f0 h$ |: @$ c$ W
- end- i* p( f% F b1 _$ J/ s& K
- end
, A. b5 I! K) r
1 z) E! x+ j: a* D
7 `6 w# [& \; p& n- --打印
$ G7 R+ Y0 i" n. Z) W - btn3.onClick=function()
. k9 U) d% g) T - if CHOICEMODE then- _3 h* l1 X) @/ t: X* Y
- task(1,function(). u& I* r) D# a9 [. T
- for k,v ipairs(datas) do! d# T1 j6 ]- q2 n
- if v["cb"]["checked"] then
E9 Y, @4 B7 [; D. U - print(v["tv"])
( U) e9 U! r, F - end l8 v5 V' s+ ]; D- u
- end
! Z( e2 i1 V5 t2 w A - end)
5 J0 s- Y* I3 d4 \ - else% a" S' m$ S, d
- print("未开启多选模式,长按列表开启")
5 f: s* F/ u ^/ n$ q - end
2 L3 W4 J8 ?, [. u4 b C - end
& w- f* n% K6 |9 t - ' F. l1 P& O9 U' J9 j e8 r, ^
- : `0 |$ E6 x- \
- % D" P% S5 h8 S/ Z, D" R
- 9 u& z& E. ?0 T7 `- W8 V
- function del_data()
8 F% k2 @: c% _4 J" f( [3 \ - for k,v in pairs(datas) do
. h5 _1 q9 F3 j4 o! u - if datas[k]["cb"]["checked"]==true then
$ t5 `& } e* w- S2 x/ c* U& g - table.remove(datas,k)
/ V. [1 c2 Z+ V9 Y2 l7 O' w - del_data()
& c' t0 |3 G G; `+ s ?& M- a - break
$ E. w: E1 D7 \6 C/ W) f' ~ - end
7 L4 h) A5 b2 D1 G5 w+ g) E1 @ - end
, @5 I( E5 V) j2 a! {7 x& i: l - end
/ H8 d" a& c8 g, h J
: S$ P% S0 T B+ q5 V- 4 Y3 ~" |6 t' y+ [( b$ _. a; D" ~8 m
- $ U0 |6 ]' o, o. P" v! T. E
- --删除数据
) Z. S6 B3 o7 T. b- y4 X& m% z - btn4.onClick=function(); N7 B% n7 U0 c( t; g* v, T6 W
- if CHOICEMODE then r3 `9 n8 X/ H9 y- h
- task(1,function()/ O1 K6 ?; Y9 Z& o) v
- del_data()
, `! K$ x: X) F, n - adp.notifyDataSetChanged() e o6 [8 P/ N
- end)" t: F( N% x/ d1 |, m
- else
3 r7 S# {! b' h; q; r# o - print("未开启多选模式,长按列表开启")* `. [( M6 M: @9 q+ ?$ i$ g% N
- end
4 O" L, l# c9 }! C# V6 c - end4 g0 ^" a4 U6 D$ f; h0 e8 x
" G% Q; z" K& j+ _; g( g1 O$ h
* F, F3 |. Q" D p- ! |8 l: x3 C% i. x& W
) N+ p; W2 c C, c! F4 E2 Y l- --返回键的交互
/ o+ s( h) x* X - function onKeyDown(code,event)3 O: [' l! k: f3 ?% b f0 r% P
- if string.find(tostring(event),"KEYCODE_BACK") ~= nil then
+ @0 ^+ ]' J& h% x - ) m, {* `- x [9 z6 U: @
- if CHOICEMODE==true then M( m+ \0 j, {$ x1 m' _
- CHOICEMODE=false+ N0 o$ E7 d9 O1 X8 P! K
- task(1,function()
7 h' z" g' ~$ W. F9 f( {3 G - for k,v ipairs(datas) do
T/ d4 U+ B3 D* l9 g( `# | - v["cb"]["checked"]=false }; p+ U) o) g2 u: E9 X. U2 n* V
- v["cb"]["visibility"]=View.GONE8 T9 o% _& D4 w: _# ?
- end$ ?& g+ i) r1 S* W- i
- adp.notifyDataSetChanged()
4 H* P2 r! X9 ?9 c7 Z0 S - end)7 ?, t# E! y8 I: L
- return true
/ L; X2 p2 N+ i+ f; k" b - else, I" _* N# _( q
- return false
# Q: N: V8 k0 d9 D# y( I - end
7 ~& Y \7 d( v3 [7 M3 a2 W
5 `2 K; F- w. ]! R+ z- end- l6 A) J# q) [/ z+ C
- end9 |1 l; P, \( r8 E
$ `$ D5 r! u3 x# S* S9 h/ F
' i% E; k* z5 f) I9 v2 \- ' E) z# o* k; t3 d: O5 ~. T
复制代码 |
|