Android Notepad Tutorial ÇÑ±Û ¹®¼­[Àڹٸ𵨸µ]

¿µ¹®À¸·Î µÇ¾î ÀÖ´Â Android ÀÇ Notepad Tutorial À» ÇÑ±Û ¹®¼­·Î º¯È¯ÇÏ¿© °³¹ßÀÚµéÀÌ ¼Õ½±°Ô Android Application À» ÀÛ¼ºÇϴµ¥ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ÀÛ¼ºÇÑ´Ù.
¿µ¹®À¸·Î µÈ ³»¿ëÀ» ±â¹ÝÀ¸·Î ´Ü°èº°·Î ÀÛ¼ºÀ» ÇØ ³ª°¥°ÍÀÌ´Ù.

0. Preparing for the Exercise

ÀÌ Notepad ¸¦ ÀÛ¼ºÇϱâ À§Çؼ­ Eclipse ¸¦ »ç¿ëÇÒ °ÍÀ̸ç, ±âº»ÀûÀ¸·Î Android ¸¦ °³¹ßÇϱâ À§ÇÑ È¯°æ¼³Á¤ÀÌ µÇ¾î ÀÖ´Ù´Â °¡Á¤ÇÏ¿¡ ÀÌ ¿¹Á¦¸¦ ÀÛ¼ºÇÑ´Ù.

ÀÌ Notepad ¸¦ À§Çؼ­ ±âº»ÀûÀÎ ¼³Á¤ÆÄÀÏ°ú Ŭ·¡½º¸¦ Á¦°øÇÏ°í ÀÖ´Ù. ¾Æ·¡ÀÇ ÀýÂ÷´ë·Î ÁøÇàÇÏ¸é µÈ´Ù.

  • ¾ÐÃàµÈ ÆÄÀÏ(zip)À» ´Ù¿î·Îµå ÇÑ´Ù. Project exercises archive(.zip)
  • ´Ù¿î·ÎµåÇÑ ÆÄÀÏÀ» ÀûÀýÇÑ µð·ºÅ丮¿¡ ¾ÐÃàÀ» Ǭ´Ù.
  • NotepadCodeLab µð·ºÅ丮¸¦ »ìÆ캻´Ù.

1. Notepad Exercise 1

À̹ø ¹®¼­¿¡¼­´Â °£´ÜÇÑ note ¸ñ·Ï°ú »õ·Î¿î note ¸¦ ÀÛ¼ºÇÏ°í add ÇÏ´Â ±â´ÉÀ» »ìÆ캻´Ù. edit Àº À̹ø ¹®¼­¿¡¼­ ´Ù·çÁö ¾Ê´Â´Ù.

  • ListActivity ÀÇ ±âº» °³³ä°ú menu °´Ã¼¸¦ »ý¼ºÇÏ°í Çڵ鸵 ó¸®
  • note ¸¦ ÀúÀåÇϱâ À§ÇÑ SQLite database ¸¦ »ç¿ëÇÏ´Â ¹æ¹ý
  • SimpleCursorAdapter ¸¦ »ç¿ëÇÏ¿© ListView ¿¡ database cursor ¿¡¼­ µ¥ÀÌÅ͸¦ ¹ÙÀεå ÇÏ´Â ¹æ¹ý
  • ½ºÅ©¸° layout ÀÇ ±âº» °³³ä°ú list view ¸¦ layout ó¸®ÇÏ´Â ¹æ¹ý, Activity menu ¿¡ item À» Ãß°¡ÇÏ´Â ¹æ¹ý, ±×¸®°í menu ¼±Åÿ¡ µû¶ó¼­ Activity °¡ ¾î¶»°Ô ó¸®ÇÏ´ÂÁö¿¡ ´ëÇÑ ¹æ¹ý

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 ¸¦ Á¤ÀÇÇØ¾ß ÇÑ´Ù.

  • /res/layout/notes_row.xml ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.
  • ¾Æ·¡ÀÇ Äڵ带 ÀÔ·ÂÇÑ´Ù.

  • ÆÄÀÏÀ» ÀúÀåÇÑ´Ù.

1.6 Step 6

Notepadv1 Ŭ·¡½º¸¦ »ìÆ캸¸é, ¼¼ °³ÀÇ ¸Þ¼Òµå°¡ Á¸ÀçÇÑ´Ù. ÀÌ ¼¼°³ÀÇ ¸Þ¼Òµå¸¦ override µÇ¾î ÀÖ´Ù.

    onCreate() ¸Þ¼Òµå : Activity °¡ start µÇ¾úÀ» ¶§, È£ÃâµÈ´Ù. óÀ½ ¸®¼Ò½º¸¦ ¼³Á¤ÇÏ´Â ¿ªÇÒ¿¡ ÁÖ·Î »ç¿ëµÈ´Ù. onCreateOPtionsMenu() ¸Þ¼Òµå : Activity ¿¡ ´ëÇÑ Menu ¸¦ È°¼ºÈ­ÇÒ ¶§ »ç¿ë, »ç¿ëÀÚ°¡ menu¹öÆ°À» Ŭ¸¯Çϸé Menu ¸¦ º¸¿©ÁØ´Ù. onOptionItemSelected() ¸Þ¼Òµå : Menu ¿¡ À̺¥Æ®°¡ ¹ß»ýÇßÀ» ¶§ È£ÃâµÇ´Â ¸Þ¼Òµå

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 À» ¼±ÅÃÇÏ¿© ½ÇÇàÇÑ´Ù.