ListView Priject (3)









ListView project ေလးတစ္ခု အပ်င္းေျပ ေရးၾကည္႔ရေအာင္ဗ်ာ ... အပိုင္း ( 3 )
***********************

အပိုင္း ( 2 ) က layout အတိုင္း ရေအာင္ ေရးထားျပီးျပီလို႔ ယူဆပါတယ္။

main.xml အတြက္ layout ပိုင္းက ဒါပဲ ျဖစ္ပါတယ္။ ကဲ id ခ်ိတ္တာ နဲ႔ Button Click အတြက္ ေရးေပးရေအာင္ပါ။

က်ေနာ္တို႔ ေရးထားတဲ႔ Layout မွာ ListView တစ္ခုပါပါတယ္။ သူ႔ကို AIDE Designer ကေန ေထာက္ျပီး ID ကို ေရြးျပီး id အျဖစ္ listview လို႔ ေပးလိုက္ပါ။

MainActivity class အတြင္းမွာ သူ႔ကို id ရွာခ်ိတ္ပါမယ္။ ဒီေနရာမွာ Beginner ေတာ္ေတာ္မ်ားမ်ား onCreate() အတြင္းမွာပါ တန္းျပီး

ListView mListView = (ListView) findViewById( ) .... ဘာညာဆိုျပီး id ခ်ိတ္ပစ္တတ္ၾကပါတယ္။ အဲ႔ဒီလို ခ်ိတ္ရင္ အဲ႔ mListView ကို class အတြင္းက အျခားေနရာကေန လွမ္းယူသံုးလို႔ မရေတာ႔ပါဘူး။ onCreate() ထဲမွာပဲ mListView ကို ေၾကျငာတာ ေရးခဲ႔တာေတြ လုပ္ခဲ႔ေတာ႔ onCreate() အတြင္းမွာပဲ ယူသံုးလို႔ ရပါမယ္။ ဒါကို Java မွာ scope (နယ္ပယ္) ကန္႔သတ္မႈ ရွိတယ္လို႔ ေခၚပါတယ္။ ဒါဆို mListView ကို အခုေရးမယ္႔ class အတြင္း ဘယ္ေနရာကေန ေခၚသံုးသံုးရေအာင္ ဒီ scope ကို ျမွင့္ေပး ခ်ဲ႕ေပး (wide) ရပါမယ္။ variable တစ္ခုကို class ထိပ္ဆံုးမွာ ေၾကျငာေပးလိုက္ရင္ အဲ႔ဒီ variable ရဲ႕ scope ဟာ class အတြင္း ဘယ္ေနရာက ေခၚသံုးသံုးရတဲ႔ class wide ျဖစ္သြားလို႔ အဆင္ေျပပါျပီ။

ဒါေၾကာင့္ ေၾကျငာလိုက္ပါ MainActivity class အတြင္းက ထိပ္ဆံုးမွာ

ListView mListView;

App တစ္ခု စအလုပ္လုပ္တာဟာ onCreate() က ျဖစ္တာမို႔ onCreate() အတြင္းမွာ အဲ႔ mListView ကို id ဖမ္းခ်ိတ္လိုက္ပါမယ္။

mListView = (ListView) findViewById(R.id.listview);

ဟုတ္ကဲ႔ပါ အခု က်ေနာ္တို႔ Button ေလးခုအတြက္ Click လုပ္ရင္ သိေအာင္ ေရးပါမယ္။

ဒီေနရာမွာ Activity ကို extends လုပ္ထားတဲ႔ Class အတြင္းတစ္ခုမွာ Button ေတြကို id ခ်ိတ္ျပီးမွ onClick Listener ခ်ိတ္ျပီး ေရးတာနဲ႔  onClick method တိုက္ရိုက္တန္းျပီးေရးတာဆိုျပီး အမ်ားဆံုး သံုးၾကပါတယ္။ အခု က်ေနာ္တို႔ေရးမွာက Activity ကို extends လုပ္ထားတဲ႔ MainActivity class အတြင္းမွာမို႔ onClick method ကို တန္းေရးပါမယ္။ Button ေတြကို id ခ်ိတ္မေနေတာ႔ပါဘူး။ ပ်င္းလို႔ပါ။ :)

OK, Button ေလးခုအတြက္ onClick method ေလးခု လိုမွာေပါ႔။

အခု အေပါင္း Button အဝိုင္းအတြက္ onClick method ေရးမွာမို႔ AIDE Designer ကေန + အဝိုင္း Button ကို ေထာက္ျပီး OnClick မွာ clickPlusButton ဆိုျပီး ေရးလိုက္ပါ။

OnClick ရဲ႕ သေဘာတရားက အခု Button ကို ႏွိပ္လိုက္ရင္ ဒီ အခုေရးလိုက္တဲ႔ clickPlusButton ဆိုတဲ႔ နာမည္နဲ႔ method ကို run ပါလို႔ ေျပာလိုက္တာပါပဲ။

ဒါဆို က်ေနာ္တို႔က clickPlusButton ဆိုတဲ႔ နာမည္နဲ႔ method တစ္ခုကို MainActivity class အတြင္းမွာ ဖန္တီးေရးေပးရမွာေပါ႔။ ေရးရေအာင္ပါ။ method တစ္ခု ေရးရင္ သူ႔ေရးနည္းအတိုင္း တစ္ဆင့္ခ်င္း ေရးေပးလိုက္ရံုပါ။

1) method တစ္ခုဟာ public, private, protected ဆိုတဲ႔ modifier သံုးခုထဲက တစ္ခုခုနဲ႔ စေရးရပါတယ္။ Button တစ္ခုအတြက္ onClick method ဟာ အျမဲတမ္း public ျဖစ္ရပါမယ္။ ဒါေၾကာင့္ စေရးပါမယ္ ...

public

2) method တစ္ခုမွာ modifier ေရးျပီးရင္ return type ထုတ္ယူမလား မယူဘူးလားဆိုျပီး သတ္မွတ္ေပးရပါတယ္။ Button တစ္ခုအတြက္ onClick method တစ္ခုဟာ ဘာ return မွ ျပန္မယူထားတဲ႕ void ျဖစ္ရပါမယ္။ ဆက္ေရးပါမယ္

public void

3) ဒီ ႏွစ္ခ်က္ျပီးတဲ႔အခါ method တစ္ခုကို အမည္ေပးရပါမယ္။ အေပၚမွာ ေပးမယ္႔နာမည္ ေျပာထားခဲ႔ပါျပီ။ ေပးလိုက္ပါ
public void clickPlusButton ( ) {

}

(method ေတြကို စနစ္တက် နာမည္ေပးဖို႔ လိုအပ္ပါတယ္။ ဘယ္လိုေပးရမလဲ? အဂၤလိပ္လိုဆို ၾကိယာရဲ႕ action ကို ယူေပးရပါမယ္။ ဥပမာ clickButton ခလုတ္ကို ကလစ္ပါဆိုျပီး action verb ျဖစ္တဲ႔ click ကို စေရးေပးမွ နည္းစနစ္ျဖစ္ျပီး buttonClick ဆို စနစ္မက်ပါ။ "စနစ္မက်" လို႔သာ ေျပာျခင္းျဖစ္ျပီး ဒီလို မေပးရလို႔ မဆိုလိုပါ။ )

4) method ေတြမွာ နာမည္ေနာက္က လက္သည္းကြင္းထဲမွာ မိမိ အသံုးျပဳမယ္႔ Object ေတြ data ေတြကို input ေတာင္းယူ အသံုးျပဳ ႏိုငိပါတယ္။ input မေတာင္းယူပဲနဲ႔ လည္း အသံုးျပဳႏိုင္ပါတယ္။ ဒီ input အျဖစ္ ေတာင္းယူတဲ႔ object/data ေတြကို argument parameters လို႔ သံုးပါတယ္။ Button onClick အတြက္ method တစ္ခုဟာ အျမဲတမ္း input  အျဖစ္ View Object ကို ထည္႔ေပးရပါတယ္။ ဒီလို input အျဖစ္ထည္႔ေပးတာကို pass လုပ္တယ္လို႔ သံုးပါတယ္။ အေပၚက က်ေနာ္တို႔ ေရးလက္စ Button onClick method မွာ View object ကို v ဆိုတဲ႔ (ၾကိဳက္ရာ အမည္တစ္ခုခုနဲ႔) pass လုပ္ေပးလိုက္ရေအာင္ပါ။ ဒီလို ရလာပါမယ္။
public void clickPlusButton (View v ) {

}

ျပီးရင္ အခု onClick method အလုပ္ လုပ္မလုပ္ Toast နဲ႔ ေထာက္ၾကည္႔ႏိုင္ေအာင္
ေစာေစာက method ထဲ Toast ေလးတစ္ခု ေရးထည္႔ ေပးထားလိုက္ပါ။

public void clickPlusButton (View v ) {

Toast.makeText(this,"Plus Button Clicked",Toast.LENGTH_SHORT).show();

}

ျပီးရင္ အခု Method ဟာ Plus Button ရဲ႕ onClick method မွန္း ဘယ္အခ်ိန္ျပန္ၾကည္႔ၾကည္႔ သိသာေအာင္ method အေပၚကေန comment စာေၾကာင္းေလးတစ္ခုနဲ႔ ေရးေပးထားခဲ႔ပါ။

// Plus Button onClick() method

ကဲ project ကို build လုပ္ျပီး Plus Button ကို ႏွိပ္ၾကည္႔လို႔ ရပါျပီ။

Congrats! ဂုဏ္ယူပါတယ္။ အခု Button တစ္ခုအတြက္ onClick method တစ္ခုကို Button ကို id မခ်ိတ္ပဲ တိုက္ရိုက္ method ေရးနည္းနဲ႔ ေရးလိုက္ႏိုင္ပါျပီ။

အခုအပိုင္းရဲ႕ ေလ႔က်င့္ခန္းအျဖစ္ က်န္တဲ႕ LEVEL 1,2,3 Button သံုးခုအတြက္ အခုနည္းအတိုင္း method သံုးခု ကိုယ္တိုင္ေရးရန္ပဲ ျဖစ္ပါတယ္။

ေပးရမယ္႔ method နာမည္ေတြက

clickLevelOneButton
clickLevelTwoButton
clickLevelThreeButton

ေရးရမယ္႔အဆင့္ေတြက အေပၚမွာ ေရးခဲ႔တဲ႔အတိုင္း -

** AIDE Designer ကေန မိမိ onClick ေရးမယ္႔ Button အတြက္ onClick သတ္မွတ္ရန္

** အဲ႔ဒီ method ဖန္တီးရန္

** အလုပ္ လုပ္မလုပ္ စမ္းသပ္ဖို႔ Toast ေထာက္ၾကည္႔ႏိုင္ရန္ Toast တစ္ခု ေရးေပးထားရန္

** မိမိ ေရးသည္႔ method ဘာအတြက္ဆိုတာကို comment သံုးေရးရန္

ေရးျပီးပါက မိမိေရးလိုက္တဲ႔ method မ်ား အလုပ္လုပ္ေနရပါမယ္။ app ကို build လုပ္ျပီး စမ္းသပ္ပါ။ error မရွိရပါ။ Force closed မျဖစ္ရပါ။
-----------------------------------------

အပိုင္း ( 4 ) ေမွ်ာ္ .... :)

ကိုမ်ိဳး

AIDE Android Lessons And Project Group

မွကူးယူတင္ထားပါသည္


#mkk_ListView


Comments