Android Notepad Tutorial ÇÑ±Û ¹®¼[Àڹٸ𵨸µ]
¿µ¹®À¸·Î µÇ¾î ÀÖ´Â Android ÀÇ Notepad Tutorial À» ÇÑ±Û ¹®¼·Î º¯È¯ÇÏ¿© °³¹ßÀÚµéÀÌ ¼Õ½±°Ô Android Application À» ÀÛ¼ºÇϴµ¥ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ÀÛ¼ºÇÑ´Ù.
¿µ¹®À¸·Î µÈ ³»¿ëÀ» ±â¹ÝÀ¸·Î ´Ü°èº°·Î ÀÛ¼ºÀ» ÇØ ³ª°¥°ÍÀÌ´Ù.
0. Preparing for the Exercise
ÀÌ Notepad ¸¦ ÀÛ¼ºÇϱâ À§Çؼ Eclipse ¸¦ »ç¿ëÇÒ °ÍÀ̸ç, ±âº»ÀûÀ¸·Î Android ¸¦ °³¹ßÇϱâ À§ÇÑ È¯°æ¼³Á¤ÀÌ µÇ¾î ÀÖ´Ù´Â °¡Á¤ÇÏ¿¡ ÀÌ ¿¹Á¦¸¦ ÀÛ¼ºÇÑ´Ù.
ÀÌ Notepad ¸¦ À§Çؼ ±âº»ÀûÀÎ ¼³Á¤ÆÄÀÏ°ú Ŭ·¡½º¸¦ Á¦°øÇÏ°í ÀÖ´Ù. ¾Æ·¡ÀÇ ÀýÂ÷´ë·Î ÁøÇàÇÏ¸é µÈ´Ù.
1. Notepad Exercise 1
À̹ø ¹®¼¿¡¼´Â °£´ÜÇÑ note ¸ñ·Ï°ú »õ·Î¿î note ¸¦ ÀÛ¼ºÇÏ°í add ÇÏ´Â ±â´ÉÀ» »ìÆ캻´Ù. edit Àº À̹ø ¹®¼¿¡¼ ´Ù·çÁö ¾Ê´Â´Ù.
1.1 Step 1
Notepad ÀÇ ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇϱâ À§ÇÑ ±âº» ȯ°æ¼³Á¤°ú Äڵ带 Æ÷ÇÔÇÏ°í ÀÖ´Â ¼Ò½º¸¦ ´Ù¿î·Îµå ¹Þ´Â´Ù.(À§ÀÇ ³»¿ë Âü°í)
File -> New -> Android Project ¸¦ ¼±ÅÃÇÏ°í, Create project from existing source ¸¦ ¼±ÅÃÇÑ´Ù.
±×¸®°í Locationn ¿¡¼ Browse ¹öÆ°À» Ŭ¸¯ÇÏ¿©, ´Ù¿î·ÎµåÇؼ ¾ÐÃàÀ» Ǭ µð·ºÅ丮¿¡¼ Notepadv1 µð·ºÅ丮¸¦ ¼±ÅÃÇÑ´Ù. ±×·¯¸é ÀÚµ¿À¸·Î Project name ÀÌ ÀÔ·ÂÀÌ µÈ´Ù.
Build Target Àº ¼³Á¤µÈ AVD Áß¿¡¼ ÀûÀýÇÑ °ÍÀ» ¼±ÅÃÇÑ´Ù. Application Name °ú Package name Àº ÀÚµ¿À¸·Î ÀÔ·ÂÀÌ µÇ¸ç, Min SDK Version ¿¡ ¼±ÅÃµÈ Build Target ¿¡ ¸Â°Ô ¹öÀü ¹øÈ£¸¦ ÀÔ·ÂÇÑ´Ù.
±×¸®°í Finish ¹öÆ°À» Ŭ¸¯Çϸé ÇÁ·ÎÁ§Æ®°¡ »ý¼ºÀÌ µÈ´Ù.
1.2 Step 2
NotesDbAdapter Ŭ·¡½º¸¦ »ìÆ캸¸é, ÀÌ Å¬·¡½º´Â SQLite database ¸¦ »ç¿ëÇÏ¿©, »õ·Î ÀÛ¼ºÇÑ note ¸¦ ÀúÀåÇÏ°í, ¼öÁ¤Çϱâ À§Çؼ Database °ü·Ã ÀÛ¾÷µéÀ» ó¸®Çϴ Ŭ·¡½ºÀÌ´Ù.
NotesDbAdapter Ŭ·¡½ºÀÇ Ã¹ ºÎºÐÀÇ ¸â¹öº¯¼ö¸¦ »ìÆ캸¸é, note ÀÇ ³»¿ëÀ» Database ¿¡ ÀúÀåÇϱâ À§ÇÑ Ä÷³¸íÀ» Á¤ÀÇÇÏ°í ÀÖ´Ù. Ä÷³ÀÇ ¼¼°³°¡ ÀÖ°í, _id, title, body ÀÇ ¼¼ºÎºÐÀ¸·Î ³ª´µ¾îÁ® ÀÖÀ¸¸ç, _id ´Â Database ¿¡ query ¸¦ º¸³»¼ Á¶È¸Çϰųª, ³»¿ëÀ» ¼öÁ¤ÇÒ¶§ »ç¿ëµÇ¾îÁö´Â Ä÷³(PK)ÀÌ´Ù.
NotesDbAdapter() »ý¼ºÀÚ´Â Context ¸¦ ÂüÁ¶¾ò´Â Äڵ带 Æ÷ÇÔÇÏ°í ÀÖ´Ù. Activity ¸¦ »ç¿ëÇÏ°Ô µÇ¸é, Activity ¿¡¼ »ó¼Ó¹Þ´Â Context ÀÇ ÂüÁ¶¸¦ ¾òµµ·Ï ÇÏ¿©, Context °¡ ÇÊ¿äÇÒ °æ¿ì¿¡ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ó¸®ÇÏ°í ÀÖ´Ù.
open() ¸Þ¼Òµå´Â DatabaseHelperÀÇ ÀνºÅϽº¸¦ È£ÃâÇÏ°í ÀÖÀ¸¸ç, ÀÌ DatabaseHelper ´Â SQLiteOpenHelper Ŭ·¡½º¸¦ ±¸ÇöÇÑ ·ÎÄÃŬ·¡½ºÀÌ´Ù. ¶ÇÇÑ getWritableDatabase() ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© database ¸¦ creating/opening 󸮸¦ ÇØÁØ´Ù.
close() ¸Þ¼Òµå´Â database ¿¡ ´ëÇؼ °ü·ÃµÈ ¸®¼Ò½º¸¦ ÇØÁ¦ÇÏ°í, connection À» close ÇÑ´Ù.
createNote() ¸Þ¼Òµå´Â »õ·Î¿î Note ¿¡ ´ëÇÑ title °ú body °ªÀ» string °ªÀ¸·Î °¡Á®¿Í¼ database ¿¡ »õ·Î ³ëÆ®¸¦ »ý¼ºÇÑ´Ù. Á¤»óÀûÀ¸·Î note ¸¦ »ý¼ºÇϸé, »õ·ÎÀÌ »ý¼ºµÈ note ÀÇ _id °ªÀ» ¸®ÅÏÇÑ´Ù.
deleteNote() ´Â »èÁ¦ÇÏ°íÀÚ ÇÏ´Â note ¿¡ ´ëÇÑ rowid ¸¦ °¡Áö°í, ÇØ´ç note ¸¦ »èÁ¦ÇÑ´Ù.
fetchAllNotes() ¸Þ¼Òµå´Â database ¿¡¼ ¸ðµç note ¿¡ ´ëÇؼ Á¶È¸ÇÑ ÈÄ¿¡, Cursor ¸¦ ¸®ÅÏÇÑ´Ù. ½ÇÁ¦·Î query() ¸Þ¼Òµå°¡ ¸ðµç note ¸¦ °¡Á®¿À´Â Äõ¸®¸¦ ½ÇÇàÇÑ´Ù.
fetchNote() ¸Þ¼Òµå´Â ƯÁ¤ rowid ¸¦ ÅëÇؼ ÇϳªÀÇ Note ¸¦ °¡Á®¿Í¼ ÇϳªÀÇ ÇàÀ» Æ÷ÇÔÇÑ Cursor ¸¦ ¸®ÅÏÇÑ´Ù. query() ¸Þ¼Òµå¸¦ ÅëÇؼ ÇϳªÀÇ note ¸¸À» °¡Á®¿Àµµ·Ï 󸮸¦ ÇÑ´Ù.
updateNote() ¸Þ¼Òµå´Â rowId, title, body °ªÀ» »ç¿ëÇÏ¿©, ContentValues ÀνºÅϽº¸¦ »ç¿ëÇÏ¿©, note ÀÇ ³»¿ëÀ» ¼öÁ¤ÇÑ´Ù.
1.3 Step 3
/res/layout/notepad_list.xml ÆÄÀÏÀ» º¸¸é, µðÀÚÀÎ µÈ °ÍÀº ¾øÀ¸¸ç, ±âº»ÀûÀÎ layout À» ¼³Á¤Çϱâ À§Çؼ Android Application ¿¡¼ »ç¿ëµÇ´Â Äڵ尡 Á¤ÀǵǾî ÀÖ´Ù.
xml ÆÄÀÏ ±â¹ÝÀÇ UI µðÀÚÀÎÀ̱⿡, ű׸¦ »ç¿ëÇÏ°í ÀÖÀ¸¸ç, xmlns:android="http://schemas.android.com/apk/res/android ÀÇ android namespace ¸¦ ¼³Á¤ÇÏ°í ÀÖ´Ù.
1.4 Step 4
/res/layout/notepad_list.xml ÆÄÀÏ¿¡ µðÀÚÀÎÀ» Çϱâ À§Çؼ ¾Æ·¡¿Í °°ÀÌ Äڵ带 ÀÛ¼ºÇÑ´Ù.
ListView ¿Í TextView ÀÇ id °ª¿¡ ÀÖ´Â @ ¹®ÀÚ´Â XML parser °¡ ÀÌ °ªÀ» id ·Î ó¸®Çϵµ·Ï ÇÏ°Ô ÇÏ°í, ID resource ·Î »ç¿ëÇÏ°Ô²û ÇÑ´Ù.
ListView ¿Í TextView ´Â ¼·Î ÇϳªÀÇ note ¸¦ ³ªÅ¸³»±â À§Çؼ Çѹø¾¿ »ç¿ëµÇ¾î Áø´Ù. note °¡ ÇÑ °Çµµ ¾ø´Â °æ¿ì¿¡´Â ÀÚµ¿À¸·Î "No Notes Yet!" ¹®ÀÚ¿ °ªÀÌ º¸¿©Áø´Ù.
list ¿Í empty ID ´Â Android platform ¿¡¼ Á¦°øÇÏ°í ÀÖÀ¸¸ç, ¹Ýµå½Ã id ¾Õ¿¡ android: °¡ ¿Í¾ß ÇÑ´Ù.(¿¹: @android:id/list)
1.5 Step 5
ListView ¿¡ note ¸ñ·ÏÀ» »ý¼ºÇϱâ À§Çؼ, °¢°¢ÀÇ row ¿¡ ´ëÇÑ View ¸¦ Á¤ÀÇÇØ¾ß ÇÑ´Ù.
1.6 Step 6
Notepadv1 Ŭ·¡½º¸¦ »ìÆ캸¸é, ¼¼ °³ÀÇ ¸Þ¼Òµå°¡ Á¸ÀçÇÑ´Ù. ÀÌ ¼¼°³ÀÇ ¸Þ¼Òµå¸¦ override µÇ¾î ÀÖ´Ù.
1.7 Step 7
Notepadv1 Ŭ·¡½ºÀÇ supser class ¸¦ Activity ¿¡¼ ListActivity ·Î º¯°æÇÑ´Ù.
1.8 Step 8
onCreate() ¸Þ¼Òµå ±¸Çö
/res/layout/notepad_list.xml ÆÄÀÏÀ» contentview ·Î ÁöÁ¤ÇÏ°í, database ¸¦ »ý¼ºÇÏ°í, open ÇÏ´Â Äڵ带 ÀÛ¼ºÇÑ´Ù. ±×¸®°í fillDate() ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù.
¸â¹öº¯¼ö¿¡ mDbHelper º¯¼ö¸¦ ¼±¾ðÇÑ´Ù.
¾Æ·¡¿Í °°ÀÌ onCreate() ¸Þ¼Òµå¸¦ ±¸ÇöÇÑ´Ù.
1.9 Step 9
onCreateOptionMenu() ¸Þ¼Òµå ±¸Çö.
Add Item ¸Þ´º¸¦ Ãß°¡Çϱâ À§Çؼ ¿ì¼±, /res/values/strings.xml ÆÄÀÏ¿¡¼ ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÀ» ÇÑ´Ù.
¸Þ´ºÀÇ À§Ä¡¸¦ ¼³Á¤Çϱâ À§Çؼ ¸â¹öº¯¼ö·Î ¾Æ·¡¿Í °°ÀÌ Äڵ带 ÀÔ·ÂÇÑ´Ù.
±×¸®°í ¾Æ·¡¿Í °°ÀÌ ÄÚµùÇÑ´Ù.
1.10 Step 10
onOptionItemSelected() ¸Þ¼Òµå ±¸Çö
¸Þ´º°¡ Ŭ¸¯µÇ¾úÀ»¶§, ¾î¶² ¸Þ´º°¡ Ŭ¸¯µÇ¾ú´ÂÁö¸¦ ÆÇ´ÜÇؼ ÇØ´ç ¸Þ´º¿¡ ¸Â´Â ±â´ÉÀ» ½ÇÇàÇϵµ·Ï ó¸®
1.11 Step 11
createNote() ¸Þ¼Òµå ±¸Çö
»õ·Î¿î Note ¸¦ »ý¼ºÇÏ´Â ¸Þ¼Òµå·Î½á, Note ÀÇ ¹øÈ£¸¦ ºÙ¿©°¡¸é¼ »ý¼ºÇϵµ·Ï ó¸®
1.12 Step 12
fillDate() ¸Þ¼Òµå ±¸Çö
ÀÌ ¸Þ¼Òµå¿¡¼´Â database ¿¡¼ Á¶È¸ÇÑ Cursor ¸¦ layout ¿¡ Àû¿ëÇϱâ À§Çؼ SimpleCursorAdapter ¸¦ »ç¿ëÇÑ´Ù.
DB ¿¡¼ Á¶È¸ÇÑ °ªÀ» layout ¿¡ º¸¿©ÁÖ±â À§Çؼ, from º¯¼ö¿¡´Â º¸¿©Áú Column À» ¹è¿·Î Á¤ÀÇÇÏ°í, to º¯¼ö¿¡¼´Â µ¥ÀÌÅ͸¦ º¸¿©Áú layout ÀÇ view ÀÇ °ªÀ» ¹è¿·Î Á¤ÀÇÇÑ´Ù.
1.13 Step 13
Notepadv1 ÇÁ·ÎÁ§Æ®¸¦ ¼±ÅÃÇÏ°í, ¿À¸¥ÂÊ ¸¶¿ì½º Ŭ¸¯ÇÑ ´ÙÀ½, Run As -> Android Application À» ¼±ÅÃÇÏ¿© ½ÇÇàÇÑ´Ù.