ساخت امکانات جانبی (جستجو، لیست علاقه مندی، لوگو، منو و ...) برای برنامه اندروید

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست تاپیک:

  1. آموزش ساخت قسمت جستجو در عنوان های مباحث، برای برنامه اندروید
  2. ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه
  3. نمایش لوگوی برنامه، در ابتدای برنامه اندروید و به مدت چند ثانیه
  4. ساخت Sliding Menu (یا Navigation Drawer)، با استفاده از کتابخانه ActionBarSherlock (قابل استفاده برای برخی api های پایین)
  5. ساخت Sliding Menu با استفاده از کتابخانه ActionBarSherlock ، در برنامه نویسی اندروید

منبع: kelidestan
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
آموزش ساخت قسمت جستجو در عنوان های مباحث، برای برنامه اندروید

آموزش ساخت قسمت جستجو در عنوان های مباحث، برای برنامه اندروید

در این مبحث، قصد دارم که چگونگی ساخت جستجو در بین عنوان های برنامه اندروید را آموزش بدهم. مثلا فرض کنید که شما یک برنامه اندروید ساخته اید که دارای 200 قسمت می باشد و هر قسمت دارای یک عنوان خاص است، من به شما آموزش می دهم که چگونه یک صفحه مخصوص جستجو بسازید که ابتدا همه 200 قسمت را به صورت یک لیست نمایش بدهد و سپس، کاربر کلمات مورد نظر خود را وارد کند و آنگاه، در لیست، تنها عنوان هایی باقی بماند که کلمه مورد نظر کاربر، در آنها وجود دارد. کاربر با اشاره بر روی هر عنوان آموزشی، به صفحه مربوط به آن، هدایت خواهد شد.


کدها با این فرض نوشته شده اند که هیچ دو مبحثی، دارای عنوان برابر نیستند (داشتن عنوان برابر می تواند باعث باز شدن همزمان هر دو مبحث، هنگام اشاره کاربر بر روی نتایج شود. این مورد را به زودی تغییر خواهم داد تا کدها برای عنوان های برابر نیز مشکلی نداشته باشد، البته انتخاب عنوان برابر، زیاد جالب نیست ولی به هر حال، در آینده این مورد را نیز در نظر خواهم گرفت)


دسترسی به صفحه جستجو نیز به این صورت خواهد بود که در action bar ، یک عکس به شکل ذره بین قرار می دهیم و کاربر با اشاره بر روی آن، به صفحه جستجو هدایت می شود.

android-175.jpg

android-176.jpg

توصیه می کنم ابتدا فایل apk را که در آخر این آموزش قرار داده ایم، دانلود کرده و بر روی گوشی خود نصب کنید و با قسمت جستجوی آن کار کنید، اگر دقیقا همان چیزی بود که می خواهید، این آموزش را بخوانید.

در برنامه eclipse ، ابتدا یک پروژه اندروید با نام Kelidestan.com_Search می سازیم (نام package را برابر com.kelidestan.search انتخاب می کنیم. نام activity اصلی را برابر MainActivity انتخاب می کنیم و فایل xml متناظر آن را هم برابر activity_main قرار می دهیم).

برای این پروژه اندروید، به دو عکس نیاز داریم، یکی برای آیکون قسمت جستجو (به شکل ذره بین) و دیگری یک عکس پس زمینه که در پشت نتایج جستجو، نمایش داده می شود (برای زیباتر شدن این بخش). این دو عکس را می توانید از لینک زیر دانلود کنید تا در ادامه، از آنها استفاده نمایید :

مشاهده پیوست دانلود عکس ها.zip

بعد از اینکه پروژه ساخته شد، ابتدا فرض می کنیم که برنامه اندروید ما، قرار است که دارای 3 مبحث آموزشی باشد (این تعداد را به هر عدد دلخواه می توان افزایش داد، اما ما فعلا تعداد را برابر 3 قرار می دهیم تا روش کلی را توضیح بدهیم). بنابراین ما سه activity می سازیم، با نام های Subject_1 و Subject_2 و Subject_3 که هر کدام حاوی یک TextView است که در آن متنی دلخواه را می نویسیم (به عنوان محتوای آموزش) :

android-158.jpg

هر آموزش، به صورت یک activity در نظر گرفته شده و هر activity هم، یک فایل xml را برای نمایش محتوای آموزشی، به کار می برد. دقت کنید که ممکن است برنامه شما به گونه ای طراحی شده باشد که مثلا برای نمایش 200 آموزش، تنها از یک activity و همچنین، تنها از یک فایل xml استفاده کرده باشید (این روش، روش برتر می باشد و تنها محتوا را با کدنویسی تغییر می دهند، در آینده، یک مبحث در این مورد خواهم نوشت)، در این صورت، باید روش کلی این آموزش را یاد بگیرید و تنها کدنویسی مربوط به قسمت رفتن به مباحث آموزشی (پس از انتخاب آنها در لیست نتایج جستجو) را تغییر بدهید.
خوب اکنون باید در activity اصلی، که همان صفحه اول برنامه اندروید می باشد، سه دکمه بسازیم که ما را به سه مبحث آموزش مورد نظر ببرند. بنابراین در فایل activity_main.xml که همان فایل xml متناظر برای activity اصلی می باشد، باید سه دکمه تعریف کنیم :

android-159.jpg

ابتدا TextView درون این فایل را حذف می کنیم و سپس، سه دکمه را در آن قرار می دهیم :


android-160.jpg

کدهای فایل activity_main.xml ، به صورت زیر خواهد بود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"vertical"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingBottom[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingLeft[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingRight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    tools[COLOR=#339933]:[/COLOR]context[COLOR=#339933]=[/COLOR][COLOR=#0000FF]".MainActivity"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]Button[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/button1"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"Button 1"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]Button[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/button2"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"Button 2"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]Button[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/button3"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"Button 3"[/COLOR] [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
اکنون فایل MainActivity.java که همان activity اصلی است را باز کرده و کدهای لازم برای آن سه دکمه را می نویسیم (تعریف activity هایی که با اشاره به دکمه ها، وارد آنها می شویم) :

android-161.jpg

پس از باز کردن فایل MainActivity.java ، کدهای آن به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.search[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]main[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR]
[/FONT]
[/FONT][/COLOR]
کدها را به صورت زیر تغییر می دهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.search[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View.OnClickListener[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.Button[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#003399]Button[/COLOR] b1 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        b1.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                
                @Override
                [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] arg0[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], Subject_1.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
        [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
        [COLOR=#003399]Button[/COLOR] b2 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        b2.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                
                @Override
                [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] arg0[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], Subject_2.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
        [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
        [COLOR=#003399]Button[/COLOR] b3 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button3[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        b3.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                
                @Override
                [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] arg0[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], Subject_3.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
        [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]main[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
اکنون باید در فایل strings.xml ، عبارت های مربوط به مباحث را بنویسیم (عنوان های مباحث که قرار است در آنها جستجو کنیم). فایل strings.xml را باز می کنیم :
android-164.jpg

در ابتدا، کدهای آن به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]resources[COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"app_name"[/COLOR][COLOR=#339933]>[/COLOR]Kelidestan.[COLOR=#006633]com_Search[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"action_settings"[/COLOR][COLOR=#339933]>[/COLOR]Settings[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"hello_world"[/COLOR][COLOR=#339933]>[/COLOR]Hello world[COLOR=#339933]!</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"title_activity_subject_1"[/COLOR][COLOR=#339933]>[/COLOR]Subject_1[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"title_activity_subject_2"[/COLOR][COLOR=#339933]>[/COLOR]Subject_2[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"title_activity_subject_3"[/COLOR][COLOR=#339933]>[/COLOR]Subject_3[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"title_activity_search"[/COLOR][COLOR=#339933]>[/COLOR]Search[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]resources[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
خوب حالا باید عنوان های آموزش ها را تعریف کنیم و همچنین آنها را به شکلی مناسب برای قسمت جستجو تعریف کنیم. برای این منظور، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]resources[COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"app_name"[/COLOR][COLOR=#339933]>[/COLOR]Kelidestan.[COLOR=#006633]com_Search[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"action_settings"[/COLOR][COLOR=#339933]>[/COLOR]Settings[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"hello_world"[/COLOR][COLOR=#339933]>[/COLOR]Hello world[COLOR=#339933]!</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"title_activity_subject_1"[/COLOR][COLOR=#339933]>[/COLOR]Subject_1[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"title_activity_subject_2"[/COLOR][COLOR=#339933]>[/COLOR]Subject_2[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"title_activity_subject_3"[/COLOR][COLOR=#339933]>[/COLOR]Subject_3[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"title_activity_search"[/COLOR][COLOR=#339933]>[/COLOR]Search[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_1"[/COLOR][COLOR=#339933]>[/COLOR]آموزش اول [COLOR=#009900]([/COLOR] first [COLOR=#009900])[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_2"[/COLOR][COLOR=#339933]>[/COLOR]آموزش دوم [COLOR=#009900]([/COLOR] second [COLOR=#009900])[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_3"[/COLOR][COLOR=#339933]>[/COLOR]آموزش سوم [COLOR=#009900]([/COLOR] third [COLOR=#009900])[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    
    [COLOR=#339933]<[/COLOR]string[COLOR=#339933]-[/COLOR]array name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"search"[/COLOR][COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]item[COLOR=#339933]>[/COLOR]@string[COLOR=#339933]/[/COLOR]subject_1[COLOR=#339933]</[/COLOR]item[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]item[COLOR=#339933]>[/COLOR]@string[COLOR=#339933]/[/COLOR]subject_2[COLOR=#339933]</[/COLOR]item[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]item[COLOR=#339933]>[/COLOR]@string[COLOR=#339933]/[/COLOR]subject_3[COLOR=#339933]</[/COLOR]item[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]string[COLOR=#339933]-[/COLOR]array[COLOR=#339933]>[/COLOR]
    
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"search"[/COLOR][COLOR=#339933]>[/COLOR]جستجو[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]resources[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، سه رشته (string) برای سه عنوان آموزشی تعریف کرده ایم. همچنین یک string-array تعریف کرده ایم که در آن، به سه رشته مربوط به عنوان های آموزشی، ارجاع داده ایم (شما هم حتما ارجاع بدهید و نیازی نیست که دوباره هر عنوان را درون string-array بنویسید، زیرا بعدا در صورت تمایل برای تغییر یک عنوان، تنها کافی است که یک رشته را تغییر بدهید، نه دو رشته).

یک توصیه : بین کلمات و پرانتزها، فاصله قرار بدهید، زیرا چسبیدن کلمات به ابتدا یا انتهای پرانتز، می تواند باعث نمایش داده نشدن آن کلمات در نتایج جستجو شود. مثلا ما به جای عبارت (first)، عبارت ( first ) را نوشته ایم.

فایل subject_1.xml را باز کرده و کدهای آن را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]RelativeLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingBottom[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingLeft[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingRight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    tools[COLOR=#339933]:[/COLOR]context[COLOR=#339933]=[/COLOR][COLOR=#0000FF]".Subject_1"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]TextView
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"right"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/subject_1"[/COLOR] [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]RelativeLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین نمایش گرافیکی آن به صورت زیر خواهد بود (به همریختگی حروف فارسی مهم نیست) :

android-165.jpg

فایل subject_2.xml را باز کرده و کدهای آن را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]RelativeLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingBottom[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingLeft[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingRight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    tools[COLOR=#339933]:[/COLOR]context[COLOR=#339933]=[/COLOR][COLOR=#0000FF]".Subject_1"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]TextView
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"right"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/subject_2"[/COLOR] [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]RelativeLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین نمایش گرافیکی آن به صورت زیر خواهد بود (به همریختگی حروف فارسی مهم نیست) :

android-166.jpg


فایل subject_3.xml را باز کرده و کدهای آن را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]RelativeLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingBottom[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingLeft[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingRight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    tools[COLOR=#339933]:[/COLOR]context[COLOR=#339933]=[/COLOR][COLOR=#0000FF]".Subject_1"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]TextView
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"right"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/subject_3"[/COLOR] [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]RelativeLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین نمایش گرافیکی آن به صورت زیر خواهد بود (به همریختگی حروف فارسی مهم نیست) :

android-167.jpg

بنابراین سه activity مربوط به سه عنوان آموزشی را ساختیم (به گونه ای که بتوانیم آنها را از یکدیگر تشخیص بدهیم).

اکنون باید یک activity برای قسمت جستجوی برنامه اندروید بسازیم، بنابراین یک activity با نام Search می سازیم (فایل Search.java و فایل xml متناظر آن هم با نام search.xml) :

android-162.jpg
 
آخرین ویرایش:

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ابتدا به فایل search.xml می پردازیم. این فایل را باز کرده و سپس کدهای زیر را در آن می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"fill_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"fill_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/search_background"[/COLOR]
    android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"vertical"[/COLOR] [COLOR=#339933]>[/COLOR]
     
    [COLOR=#339933]<!--[/COLOR] Editext [B]for[/B] Search [COLOR=#339933]-->[/COLOR]
    [COLOR=#339933]<[/COLOR]EditText android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/inputSearch"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"fill_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]hint[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"جستجو"[/COLOR]
        android[COLOR=#339933]:[/COLOR]inputType[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"textVisiblePassword"[/COLOR][COLOR=#339933]/>[/COLOR]
  
    [COLOR=#339933]<!--[/COLOR] [COLOR=#003399]List[/COLOR] [COLOR=#003399]View[/COLOR] [COLOR=#339933]-->[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]ListView[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/list_view"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"fill_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR] [COLOR=#339933]/>[/COLOR]
  
[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
دقت کنید که یک عکس با نام search_background را در فولدر drawable-hdpi کپی کرده ایم که در پس زمینه صفحه جستجو، نمایش داده می شود (برای زیباتر شدن این صفحه). بنابراین شکل گرافیکی فایل search.xml به صورت زیر خواهد بود :

android-163.jpg

اکنون باید یک فایل با نام list_item.xml بسازیم :

android-168.jpg

و کدهای آن را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"vertical"[/COLOR] [COLOR=#339933]>[/COLOR]
     
    [COLOR=#339933]<!--[/COLOR] Single ListItem [COLOR=#339933]-->[/COLOR]
     
    [COLOR=#339933]<!--[/COLOR] Subject [COLOR=#003399]Name[/COLOR] [COLOR=#339933]-->[/COLOR]
    [COLOR=#339933]<[/COLOR]TextView android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/subject_name"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"fill_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]padding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"10dip"[/COLOR]
        android[COLOR=#339933]:[/COLOR]textSize[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"16dip"[/COLOR]
        android[COLOR=#339933]:[/COLOR]textStyle[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"bold"[/COLOR][COLOR=#339933]/>[/COLOR]    
 
[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
حال، فایل Search.java را باز می کنیم، کدهای آن به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.search[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Search [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]search[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]search[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
کدهای آن را به صورت زیر تغییر می دهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.search[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]java.util.ArrayList[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]java.util.HashMap[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.text.Editable[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.text.TextWatcher[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.AdapterView[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ArrayAdapter[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.EditText[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ListView[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Search [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]
        
        [COLOR=#666666][I]// List view[/I][/COLOR]
    [B]private[/B] [COLOR=#003399]ListView[/COLOR] lv[COLOR=#339933];[/COLOR]
     
    [COLOR=#666666][I]// Listview Adapter[/I][/COLOR]
    ArrayAdapter[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR] adapter[COLOR=#339933];[/COLOR]
     
    [COLOR=#666666][I]// Search EditText[/I][/COLOR]
    EditText inputSearch[COLOR=#339933];[/COLOR]
     
     
    [COLOR=#666666][I]// ArrayList for Listview[/I][/COLOR]
    ArrayList[COLOR=#339933]<[/COLOR]HashMap[COLOR=#339933]<[/COLOR][COLOR=#003399]String[/COLOR], String[COLOR=#339933]>>[/COLOR] productList[COLOR=#339933];[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]search[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#666666][I]// Listview Data[/I][/COLOR]
        [COLOR=#003399]String[/COLOR] products[COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getStringArray[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]array[/COLOR].[COLOR=#006633]search[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         
        lv [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]ListView[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]list_view[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        inputSearch [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]EditText[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]inputSearch[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         
        [COLOR=#666666][I]// Adding items to listview[/I][/COLOR]
        adapter [COLOR=#339933]=[/COLOR] [B]new[/B] ArrayAdapter[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR][COLOR=#009900]([/COLOR][B]this[/B], R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]list_item[/COLOR], R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]subject_name[/COLOR], products[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        lv.[COLOR=#006633]setAdapter[/COLOR][COLOR=#009900]([/COLOR]adapter[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         
        [COLOR=#008000][B][I]/**
         * Enabling Search Filter
         * */[/I][/B][/COLOR]
        inputSearch.[COLOR=#006633]addTextChangedListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] TextWatcher[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
             
            @Override
            [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onTextChanged[COLOR=#009900]([/COLOR]CharSequence cs, [COLOR=#000066][B]int[/B][/COLOR] arg1, [COLOR=#000066][B]int[/B][/COLOR] arg2, [COLOR=#000066][B]int[/B][/COLOR] arg3[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// When user changed the Text[/I][/COLOR]
                Search.[B]this[/B].[COLOR=#006633]adapter[/COLOR].[COLOR=#006633]getFilter[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]filter[/COLOR][COLOR=#009900]([/COLOR]cs[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]   
            [COLOR=#009900]}[/COLOR]
             
            @Override
            [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] beforeTextChanged[COLOR=#009900]([/COLOR]CharSequence arg0, [COLOR=#000066][B]int[/B][/COLOR] arg1, [COLOR=#000066][B]int[/B][/COLOR] arg2,
                    [COLOR=#000066][B]int[/B][/COLOR] arg3[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
                 
            [COLOR=#009900]}[/COLOR]
             
            @Override
            [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] afterTextChanged[COLOR=#009900]([/COLOR]Editable arg0[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// TODO Auto-generated method stub                          [/I][/COLOR]
            [COLOR=#009900]}[/COLOR]
        [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
        [COLOR=#666666][I]// after click[/I][/COLOR]
        lv.[COLOR=#006633]setOnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] AdapterView.[COLOR=#006633]OnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]

            @Override
            [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onItemClick[COLOR=#009900]([/COLOR]AdapterView[COLOR=#339933]<?>[/COLOR] parent, [B]final[/B] [COLOR=#003399]View[/COLOR] view,
                [COLOR=#000066][B]int[/B][/COLOR] position, [COLOR=#000066][B]long[/B][/COLOR] id[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        
                [B]final[/B] [COLOR=#003399]String[/COLOR] item [COLOR=#339933]=[/COLOR] lv.[COLOR=#006633]getItemAtPosition[/COLOR][COLOR=#009900]([/COLOR]position[COLOR=#009900])[/COLOR].[COLOR=#006633]toString[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#000066][B]int[/B][/COLOR] total_number [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]3[/COLOR][COLOR=#339933];[/COLOR]
                [B]for[/B][COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] x [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]<[/COLOR] total_number[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]=[/COLOR] x[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        [COLOR=#003399]String[/COLOR] SubjectName [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#000066][B]int[/B][/COLOR] resID [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]SubjectName, [COLOR=#0000FF]"string"[/COLOR], getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#003399]String[/COLOR] subject [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]resID[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        
                        [B]if[/B][COLOR=#009900]([/COLOR]item.[COLOR=#006633]equals[/COLOR][COLOR=#009900]([/COLOR]subject[COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                [COLOR=#003399]String[/COLOR] StringClass [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"com.kelidestan.search.Subject_"[/COLOR] [COLOR=#339933]+[/COLOR][COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                Class[COLOR=#339933]<?>[/COLOR] c [COLOR=#339933]=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
                                [B]if[/B][COLOR=#009900]([/COLOR]StringClass [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                    [B]try[/B] [COLOR=#009900]{[/COLOR]
                                        c [COLOR=#339933]=[/COLOR] [B]Class[/B].[COLOR=#006633]forName[/COLOR][COLOR=#009900]([/COLOR]StringClass[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                    [COLOR=#009900]}[/COLOR] [B]catch[/B] [COLOR=#009900]([/COLOR][COLOR=#003399]ClassNotFoundException[/COLOR] e[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                        [COLOR=#666666][I]// TODO Auto-generated catch block[/I][/COLOR]
                                        e.[COLOR=#006633]printStackTrace[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                    [COLOR=#009900]}[/COLOR]
                                [COLOR=#009900]}[/COLOR]
                                Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]Search.[B]this[/B], c[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#009900]}[/COLOR]
                [COLOR=#009900]}[/COLOR]
                
            [COLOR=#009900]}[/COLOR]

          [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
        [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onResume[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [B]super[/B].[COLOR=#006633]onResume[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            adapter.[COLOR=#006633]notifyDataSetChanged[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
اگر تعداد مباحث برنامه اندروید شما، مثلا برابر 200 مبحث باشد، باید متغیر total_number در کدهای بالا را به جای 3 ، برابر 200 تعریف کنید (عدد 3 را باید به تعداد مبحث مورد نظر خود تغییر بدهید).

همچنین به این خط از کدها توجه کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]String[/COLOR] StringClass [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"com.kelidestan.search.Subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
خط بالا برای برنامه اندروید دارای package با نام com.kelidestan.search می باشد و اگر شما می خواهید از این کدها، برای برنامه اندروید خود استفاده کنید، باید نام package مورد نظر خود را در این خط بنویسید. دقت کنید که ما، پیشوند موضوعات را به صورت subject_ در نظر گرفتیم (که بعد از آن، شماره آموزش درج می شود)، بنابراین اگر پیشوند انتخابی شما فرق دارد، این پیشوند را نیز باید در این خط تغییر بدهید.

همه قسمت های برنامه را ساختیم، اما یک بخش مهم باقی مانده است و آن قرار دادن دکمه ای در action bar است که بتوانیم توسط آن، وارد صفحه جستجو بشویم. ابتدا یک عکس (که قرار است در action bar نمایش داده شود) را با نام search ، در فولدر drawable-hdpi از پروزه اندروید، کپی کنیم :

android-169.jpg


سپس فایلی با نام menu.xml می سازیم (در مسیر نمایش داده شده در تصویر زیر) :


مشاهده پیوست android-170.jpg

کدهای فایل menu.xml را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]menu xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR] [COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]item
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/itemSearch"[/COLOR]
        android[COLOR=#339933]:[/COLOR]icon[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/search"[/COLOR]
        android[COLOR=#339933]:[/COLOR]showAsAction[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"ifRoom|withText"[/COLOR]
        android[COLOR=#339933]:[/COLOR]title[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/search"[/COLOR][COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]item[COLOR=#339933]>[/COLOR]
[COLOR=#339933]</[/COLOR]menu[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
خوب حالا برای اینکه در تمامی activity ها، در action bar ، آیکون مربوط به قسمت جستجو را داشته باشیم، باید فایل java مربوط به تک تک activity ها را باز کرده و onCreateOptionsMenu() و همچنین onOptionsItemSelected()را برای آن بنویسیم. ابتدا ببینید که آیا قبلا در activity ، کد مربوط به onCreateOptionsMenu() وonOptionsItemSelected() نوشته شده است یا خیر و اگر نوشته شده بود، باید آن را باز نویسی کنید. مثلا برای activity اصلی که فایل آن دارای نام MainActivity.java می باشد، کد زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]@Override
[B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    MenuInflater inflater [COLOR=#339933]=[/COLOR] getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]menu[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR]
        
@Override
[B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onOptionsItemSelected[COLOR=#009900]([/COLOR][COLOR=#003399]MenuItem[/COLOR] item[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [B]switch[/B] [COLOR=#009900]([/COLOR]item.[COLOR=#006633]getItemId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]itemSearch[/COLOR][COLOR=#339933]:[/COLOR]
        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], Search.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
    [B]default[/B][COLOR=#339933]:[/COLOR] 
        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]   
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
برای اینکه محل این کد را متوجه شوید، کدهای نهایی فایل MainActivity.java را در زیر نمایش داده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.search[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuInflater[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuItem[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View.OnClickListener[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.Button[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#003399]Button[/COLOR] b1 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        b1.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                
                @Override
                [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] arg0[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], Subject_1.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
        [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
        [COLOR=#003399]Button[/COLOR] b2 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        b2.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                
                @Override
                [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] arg0[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], Subject_2.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
        [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
        [COLOR=#003399]Button[/COLOR] b3 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button3[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        b3.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                
                @Override
                [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] arg0[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], Subject_3.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
        [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
          [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        MenuInflater inflater [COLOR=#339933]=[/COLOR] getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]menu[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onOptionsItemSelected[COLOR=#009900]([/COLOR][COLOR=#003399]MenuItem[/COLOR] item[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]switch[/B] [COLOR=#009900]([/COLOR]item.[COLOR=#006633]getItemId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]itemSearch[/COLOR][COLOR=#339933]:[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], Search.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [B]default[/B][COLOR=#339933]:[/COLOR] 
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]       
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
فایل Subject_1.java را باز کرده و کدهای مربوط به onCreateOptionsMenu() و همچنین onOptionsItemSelected()را در آن می نویسیم، بنابراین کدهای نهایی این فایل، به صورت زیر خواهد بود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.search[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuInflater[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuItem[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Subject_1 [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]subject_1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
          [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        MenuInflater inflater [COLOR=#339933]=[/COLOR] getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]menu[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onOptionsItemSelected[COLOR=#009900]([/COLOR][COLOR=#003399]MenuItem[/COLOR] item[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]switch[/B] [COLOR=#009900]([/COLOR]item.[COLOR=#006633]getItemId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]itemSearch[/COLOR][COLOR=#339933]:[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]Subject_1.[B]this[/B], Search.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [B]default[/B][COLOR=#339933]:[/COLOR] 
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]       
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
فایل Subject_2.java را باز کرده و کدهای مربوط به onCreateOptionsMenu() و همچنین onOptionsItemSelected()را در آن می نویسیم، بنابراین کدهای نهایی این فایل، به صورت زیر خواهد بود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.search[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuInflater[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuItem[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Subject_2 [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]subject_2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
          [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        MenuInflater inflater [COLOR=#339933]=[/COLOR] getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]menu[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onOptionsItemSelected[COLOR=#009900]([/COLOR][COLOR=#003399]MenuItem[/COLOR] item[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]switch[/B] [COLOR=#009900]([/COLOR]item.[COLOR=#006633]getItemId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]itemSearch[/COLOR][COLOR=#339933]:[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]Subject_2.[B]this[/B], Search.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [B]default[/B][COLOR=#339933]:[/COLOR] 
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]       
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
فایل Subject_3.java را باز کرده و کدهای مربوط به onCreateOptionsMenu() و همچنین onOptionsItemSelected()را در آن می نویسیم، بنابراین کدهای نهایی این فایل، به صورت زیر خواهد بود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.search[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuInflater[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuItem[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Subject_3 [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]subject_3[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
          [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        MenuInflater inflater [COLOR=#339933]=[/COLOR] getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]menu[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onOptionsItemSelected[COLOR=#009900]([/COLOR][COLOR=#003399]MenuItem[/COLOR] item[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]switch[/B] [COLOR=#009900]([/COLOR]item.[COLOR=#006633]getItemId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]itemSearch[/COLOR][COLOR=#339933]:[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]Subject_3.[B]this[/B], Search.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [B]default[/B][COLOR=#339933]:[/COLOR] 
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]       
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
فایل Search.java را باز کرده و کدهای مربوط به onCreateOptionsMenu() و همچنین onOptionsItemSelected() را در آن می نویسیم، بنابراین کدهای نهایی این فایل، به صورت زیر خواهد بود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.search[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]java.util.ArrayList[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]java.util.HashMap[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.text.Editable[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.text.TextWatcher[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuInflater[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuItem[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.AdapterView[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ArrayAdapter[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.EditText[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ListView[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Search [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]
        
        [COLOR=#666666][I]// List view[/I][/COLOR]
    [B]private[/B] [COLOR=#003399]ListView[/COLOR] lv[COLOR=#339933];[/COLOR]
     
    [COLOR=#666666][I]// Listview Adapter[/I][/COLOR]
    ArrayAdapter[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR] adapter[COLOR=#339933];[/COLOR]
     
    [COLOR=#666666][I]// Search EditText[/I][/COLOR]
    EditText inputSearch[COLOR=#339933];[/COLOR]
     
     
    [COLOR=#666666][I]// ArrayList for Listview[/I][/COLOR]
    ArrayList[COLOR=#339933]<[/COLOR]HashMap[COLOR=#339933]<[/COLOR][COLOR=#003399]String[/COLOR], String[COLOR=#339933]>>[/COLOR] productList[COLOR=#339933];[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]search[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#666666][I]// Listview Data[/I][/COLOR]
        [COLOR=#003399]String[/COLOR] products[COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getStringArray[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]array[/COLOR].[COLOR=#006633]search[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         
        lv [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]ListView[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]list_view[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        inputSearch [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]EditText[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]inputSearch[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         
        [COLOR=#666666][I]// Adding items to listview[/I][/COLOR]
        adapter [COLOR=#339933]=[/COLOR] [B]new[/B] ArrayAdapter[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR][COLOR=#009900]([/COLOR][B]this[/B], R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]list_item[/COLOR], R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]subject_name[/COLOR], products[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        lv.[COLOR=#006633]setAdapter[/COLOR][COLOR=#009900]([/COLOR]adapter[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         
        [COLOR=#008000][B][I]/**
         * Enabling Search Filter
         * */[/I][/B][/COLOR]
        inputSearch.[COLOR=#006633]addTextChangedListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] TextWatcher[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
             
            @Override
            [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onTextChanged[COLOR=#009900]([/COLOR]CharSequence cs, [COLOR=#000066][B]int[/B][/COLOR] arg1, [COLOR=#000066][B]int[/B][/COLOR] arg2, [COLOR=#000066][B]int[/B][/COLOR] arg3[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// When user changed the Text[/I][/COLOR]
                Search.[B]this[/B].[COLOR=#006633]adapter[/COLOR].[COLOR=#006633]getFilter[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]filter[/COLOR][COLOR=#009900]([/COLOR]cs[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]   
            [COLOR=#009900]}[/COLOR]
             
            @Override
            [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] beforeTextChanged[COLOR=#009900]([/COLOR]CharSequence arg0, [COLOR=#000066][B]int[/B][/COLOR] arg1, [COLOR=#000066][B]int[/B][/COLOR] arg2,
                    [COLOR=#000066][B]int[/B][/COLOR] arg3[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
                 
            [COLOR=#009900]}[/COLOR]
             
            @Override
            [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] afterTextChanged[COLOR=#009900]([/COLOR]Editable arg0[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// TODO Auto-generated method stub                          [/I][/COLOR]
            [COLOR=#009900]}[/COLOR]
        [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
        [COLOR=#666666][I]// after click[/I][/COLOR]
        lv.[COLOR=#006633]setOnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] AdapterView.[COLOR=#006633]OnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]

            @Override
            [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onItemClick[COLOR=#009900]([/COLOR]AdapterView[COLOR=#339933]<?>[/COLOR] parent, [B]final[/B] [COLOR=#003399]View[/COLOR] view,
                [COLOR=#000066][B]int[/B][/COLOR] position, [COLOR=#000066][B]long[/B][/COLOR] id[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        
                [B]final[/B] [COLOR=#003399]String[/COLOR] item [COLOR=#339933]=[/COLOR] lv.[COLOR=#006633]getItemAtPosition[/COLOR][COLOR=#009900]([/COLOR]position[COLOR=#009900])[/COLOR].[COLOR=#006633]toString[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#000066][B]int[/B][/COLOR] total_number [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]3[/COLOR][COLOR=#339933];[/COLOR]
                [B]for[/B][COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] x [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]<[/COLOR] total_number[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]=[/COLOR] x[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        [COLOR=#003399]String[/COLOR] SubjectName [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#000066][B]int[/B][/COLOR] resID [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]SubjectName, [COLOR=#0000FF]"string"[/COLOR], getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#003399]String[/COLOR] subject [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]resID[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        
                        [B]if[/B][COLOR=#009900]([/COLOR]item.[COLOR=#006633]equals[/COLOR][COLOR=#009900]([/COLOR]subject[COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                [COLOR=#003399]String[/COLOR] StringClass [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"com.kelidestan.search.Subject_"[/COLOR] [COLOR=#339933]+[/COLOR][COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                Class[COLOR=#339933]<?>[/COLOR] c [COLOR=#339933]=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
                                [B]if[/B][COLOR=#009900]([/COLOR]StringClass [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                    [B]try[/B] [COLOR=#009900]{[/COLOR]
                                        c [COLOR=#339933]=[/COLOR] [B]Class[/B].[COLOR=#006633]forName[/COLOR][COLOR=#009900]([/COLOR]StringClass[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                    [COLOR=#009900]}[/COLOR] [B]catch[/B] [COLOR=#009900]([/COLOR][COLOR=#003399]ClassNotFoundException[/COLOR] e[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                        [COLOR=#666666][I]// TODO Auto-generated catch block[/I][/COLOR]
                                        e.[COLOR=#006633]printStackTrace[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                    [COLOR=#009900]}[/COLOR]
                                [COLOR=#009900]}[/COLOR]
                                Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]Search.[B]this[/B], c[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#009900]}[/COLOR]
                [COLOR=#009900]}[/COLOR]
                
            [COLOR=#009900]}[/COLOR]

          [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
        [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onResume[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [B]super[/B].[COLOR=#006633]onResume[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            adapter.[COLOR=#006633]notifyDataSetChanged[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
          [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        MenuInflater inflater [COLOR=#339933]=[/COLOR] getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]menu[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onOptionsItemSelected[COLOR=#009900]([/COLOR][COLOR=#003399]MenuItem[/COLOR] item[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]switch[/B] [COLOR=#009900]([/COLOR]item.[COLOR=#006633]getItemId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]itemSearch[/COLOR][COLOR=#339933]:[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]Search.[B]this[/B], Search.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [B]default[/B][COLOR=#339933]:[/COLOR] 
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]       
        [COLOR=#009900]}[/COLOR]


[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
خوب، ساخت پروژه اندروید تمام شد و اکنون می توانید آن را با روش دلخواه خود، تست کنید. من برنامه اندروید را بر روی گوشی نصب می کنم، صفحه اول برنامه به صورت زیر می باشد :

android-171.jpg

بر روی آیکون به شکل ذره بین، در action bar کلیک می کنیم تا صفحه جستجو باز شود :

android-172.jpg

حالا عبارت ((آموزش اول)) را می نویسیم و مشاهده می کنیم که تنها مبحث دارای این عنوان، در لیست باقی می ماند (اگر بر روی گزینه کلیک کنیم، به صفحه آن منتقل می شویم) :

android-173.jpg

جستجو را برای کلمات انگلیسی نیز تست می کنیم، برای این منظور، حرف f را می نویسیم که باعث می شود تنها مبحثی که کلمه first در آن به کار رفته، در لیست باقی بماند (باز هم تذکر می دهم که هنگام تعریف عنوان ها، کلمات را به علامت های پرانتز نچسبانید و فاصله بین آنها قرار دهید) :

android-174.jpg

این مبحث، آموزشی بود برای ساخت جستجو برای برنامه اندروید، شما می توانید از آن استفاده کرده و ویژگی های مورد نظر خود (مثل رنگ متن نتایج جستجو، پس زمینه، محل آیکون جستجو و ...) را به دلخواه خود تغییر بدهید.

فایل های پروژه اندروید را می توانید از لینک های زیر دریافت کنید :

مشاهده پیوست 120.zip
مشاهده پیوست 121.rar


توضیحات بیشتر در مورد کدها :

در ادامه به چند نکته در مورد کدها اشاره خواهیم کرد.

نکته :

به بخش زیر از کدهای فایل Search.java توجه کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]String[/COLOR] products[COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getStringArray[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]array[/COLOR].[COLOR=#006633]search[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، آرایه ای از رشته ها (string) با نام products ساخته ایم. عملیات جستجو، درون عناصر این آرایه صورت می گیرد. شیوه ای که من برای قرار دادن متن ها (عنوان ها) به کار بردم، ابتدا تعریف عنوان ها در آرایه ای در فایل strings.xml و سپس قرار دادن آن در آرایه products می باشد. شما می توانید آرایه products را به هر شیوه دلخواه تعریف کنید. مثلا می توانید متن های مختلف را از یک سری فایل متنی فراخوانی کرده و سپس در عناصر مختلف آرایه products قرار بدهید تا جستجو در بین آن متن ها صورت گیرد. بنابراین تنها تعریف آرایه رشته ای products مهم است و شیوه این کار، بستگی به ساختار برنامه اندروید شما دارد.

نکته :

به بخش زیر از کدهای فایل Search.java توجه کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#666666][I]// after click[/I][/COLOR]
lv.[COLOR=#006633]setOnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] AdapterView.[COLOR=#006633]OnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]

@Override
[B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onItemClick[COLOR=#009900]([/COLOR]AdapterView[COLOR=#339933]<?>[/COLOR] parent, [B]final[/B] [COLOR=#003399]View[/COLOR] view,
                        [COLOR=#000066][B]int[/B][/COLOR] position, [COLOR=#000066][B]long[/B][/COLOR] id[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                         
    [B]final[/B] [COLOR=#003399]String[/COLOR] item [COLOR=#339933]=[/COLOR] lv.[COLOR=#006633]getItemAtPosition[/COLOR][COLOR=#009900]([/COLOR]position[COLOR=#009900])[/COLOR].[COLOR=#006633]toString[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#000066][B]int[/B][/COLOR] total_number [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]3[/COLOR][COLOR=#339933];[/COLOR]
    [B]for[/B][COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] x [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]<[/COLOR] total_number[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]=[/COLOR] x[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [COLOR=#003399]String[/COLOR] SubjectName [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#000066][B]int[/B][/COLOR] resID [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]SubjectName, [COLOR=#0000FF]"string"[/COLOR], getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#003399]String[/COLOR] subject [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]resID[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                         
        [B]if[/B][COLOR=#009900]([/COLOR]item.[COLOR=#006633]equals[/COLOR][COLOR=#009900]([/COLOR]subject[COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#003399]String[/COLOR] StringClass [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"com.kelidestan.search.Subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            Class[COLOR=#339933]<?>[/COLOR] c [COLOR=#339933]=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
            [B]if[/B][COLOR=#009900]([/COLOR]StringClass [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]try[/B] [COLOR=#009900]{[/COLOR]
                    c [COLOR=#339933]=[/COLOR] [B]Class[/B].[COLOR=#006633]forName[/COLOR][COLOR=#009900]([/COLOR]StringClass[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR] [B]catch[/B] [COLOR=#009900]([/COLOR][COLOR=#003399]ClassNotFoundException[/COLOR] e[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                    [COLOR=#666666][I]// TODO Auto-generated catch block[/I][/COLOR]
                    e.[COLOR=#006633]printStackTrace[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
            [COLOR=#009900]}[/COLOR]
            Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]Search.[B]this[/B], c[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
    [COLOR=#009900]}[/COLOR]
                 
[COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
این بخش از کدها، تعیین کرده است که اگر کاربر بر روی یکی از نتایج جستجو اشاره کرد، چه اتفاقی بیفتد. این بخش نیز باید برای ساختارهای مختلف، به طور متفاوت تعریف شود و کدنویسی آن کاملا وابسته به ساختار برنامه اندروید می باشد.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید

ساخت لیست علاقه مندی ها (Favorites)، با استفاده از SharedPreferences و همچنین، تلاش برای محتوا محور کردن برنامه اندروید و ساده تر شدن توسعه اطلاعاتی برنامه :


در بیشتر برنامه های آموزشی و اطلاعاتی که به صورت تعدادی مبحث هستند، دو بخش ((جستجو)) و ((لیست علاقه مندی ها)) جزء بخش های اصلی و ضروری برنامه می باشند. قبلا در مبحثی دیگر، چگونگی ساخت قسمت جستجو در عنوان مبحث ها را شرح دادیم، اکنون در این مبحث قصد داریم که چگونگی ساخت لیست علاقه مندی ها را شرح بدهیم.چون از SharedPreferences استفاده می کنیم، تا زمانی که کاربر، برنامه اندروید را uninstall نکند، اطلاعات مروبط به لیست علاقه مندی ها که به صورت SharedPreferences ذخیره شده است، باقی خواهد ماند و با خروج کاربر از برنامه اندروید، مشکلی برای آنها به وجود نمی آید.اگر یادتان باشد، در مبحث مربوط به جستجو، ما برای سه مبحث، سه Activity می ساختیم و بنده در همانجا تذکر دادم که نباید در برنامه ها، بدین شیوه مباحث را بسازیم و مجبور نیستیم که برای تک تک مبحث ها، Activity های جداگانه بسازیم، بلکه می توانیم تنها یک Activity بسازیم و سپس بر اساس شماره مبحث ها، اطلاعات مبحث را در آن Activity نمایش بدهیم. در واقع، در مبحث جستجو، تنها می خواستیم منطق جستجو را آموزش بدهیم. اما اکنون، چون یک مبحث نیز در مورد چگونگی ساخت برنامه اندروید ((محتوا محور)) نوشته ام، بد نیست که در برخی مباحث، آن موارد را نیز به کار ببرم. بنابراین این بار کدها را به گونه ای می نویسم که برنامه اندروید، به راحتی قابل توسعه باشد.

در واقع، این مبحث، علاوه بر آموزش ساخت لیست علاقه مندی ها، چگونگی ساخت یک برنامه محتوا محور ساده را نیز آموزش می دهد، به گونه ای که مثلا اگر اکنون دارای 10 مبحث است، بنده اگر بخواهم آن را به 20 مبحث تغییر بدهم، تنها باید یکی از فایل های پروژه اندروید را باز کنم و عدد 10 نوشته شده در آن را به 20 تغییر بدهم و سپس، فایل strings.xml را باز کنم و تعداد 10 رشته (string) که برابر عنوان مبحث ها است و همچنین، 10 رشته دیگر که برابر متن آن مبحث ها می باشد را تعریف کنم. با این تغییرات، تعداد مباحث برنامه به 20 عدد افزایش می یابد، بدون اینکه بنده مجبور باشم که حتی یک خط از کدهای Activity های مختلف برنامه را تغییر بدهم.

دقت شود که در این برنامه اندروید، من تنها از فایل strings.xml برای تعریف محتوای اطلاعاتی برنامه استفاده کرده ام، شما می توانید انتخاب های دیگری مثل ذخیره در پایگاه داده SQLite ، ذخیره در فایل های HTML ، دریافت از اینترنت و ... را داشته باشید (یا ترکیبی از آنها)، که توضیحاتی در مورد آنها را می توانید در مبحث زیر بخوانید (در این برنامه اندروید، ساده ترین روش را انتخاب کرده ایم):
تاپیک مباحث عمومی در برنامه نویسی اندروید

ابتدا بهتر است نگاهی به خود برنامه داشته باشیم. اولین Activity برنامه، شامل لیست تمامی مباحث آموزشی است (من تعداد 7 مبحث را انتخاب کرده ام) :


105.jpg

فهرست مبحث ها، با استفاده از ListView نمایش داده شده است. با اشاره بر روی یک item از ListView ، به مبحث متناظر با شماره آن، منتقل می شویم. مثلا من بر روی عنوان مبحث سوم اشاره می کنم :

106.jpg

در زیر محتوای هر مبحث، یک علامت ستاره وجود دارد (با استفاده از ImageView)، که اگر قبلا کاربر آن را به لیست علاقه مندی ها افزوده باشد، به رنگ طلایی است و اگر جزء لیست علاقه مندی ها نباشد، همین تصویر، اما با رنگ سیاه و سفید نمایش داده می شود. بنابراین کاربر با دیدن شکل ستاره و از رنگ آن، متوجه می شود که آیا این مبحث جزء لیست علاقه مندی ها هست یا نه.
برای اینکه مبحث به لیست علاقه مندی ها افزوده شود، بر روی ستاره اشاره می کنیم و بنابراین رنگ آن به رنگ طلایی تغییر پیدا می کند و پیامی نیز با عنوان ((به لیست علاقه مندی ها افزوده شد)) نمایش داده می شود (با استفاده از روش Toast) :

107.jpg

همچنین، اگر اکنون دوباره بر روی ستاره طلایی رنگ، اشاره کنیم، مبحث سوم از لیست علاقه مندی ها حذف شده، رنگ ستاره به سیاه و سفید تغییر پیدا می کند و پیامی با عنوان ((از لیست علاقه مندی ها حذف شد)) نمایش داده می شود :

109.jpg

همچنین، اگر اکنون دوباره بر روی ستاره طلایی رنگ، اشاره کنیم، مبحث سوم از لیست علاقه مندی ها حذف شده، رنگ ستاره به سیاه و سفید تغییر پیدا می کند و پیامی با عنوان ((از لیست علاقه مندی ها حذف شد)) نمایش داده می شود :

108.jpg

برای نمایش لیست علاقه مندی ها، از یک ListView استفاده کرده ایم.


خوب اکنون به سراغ چگونگی کدنویسی پروژه اندروید می رویم و بخش های مختلف کدها را شرح خواهیم داد. توصیه می کنم فایل های پروژه اندروید را از انتهای مبحث، دانلود نمایید. در ادامه، ساختار پروزه اندروید را شرح می دهیم.


نام پروژه اندروید را برابر Favorites انتخاب کرده ایم (نام package برابر com.kelidestan.favorites انتخاب شده است. نام activity اصلی را برابر MainActivity انتخاب کرده ایم و فایل xml متناظر آن را هم برابر activity_main قرار داده ایم).


قبلا گفته بودم که اگر اطلاعاتی هست که در تعدادی از Activity های مختلف پروژه اندروید به کار می رود، نیازی نیست که مقدار آنها را در تک تک Activity ها تعریف کنید، بلکه می توانید یک کلاس (class) ساخته و مقادیر مورد نظرتان را در آن تعریف کنید و سپس در هر Activity که به آن مقدار نیاز دارید، یک شیء (object) از آن کلاس (class) بسازید و سپس مقدار مورد نظرتان را فراخوانی کنید. خوبی این روش این است که اگر بخواهید آن مقدار مورد نظر را تغییر بدهید، دیگر مجبور نیستید که تک تک آن Activity ها که در آنها، آن مقدار خاص به کار رفته است را باز و ویرایش نمایید. مقدار مورد نظر ما که در تعدادی از Activity های این پروژه اندروید به کار می رود، تعداد کل مبحث ها می باشد (که آن را برابر 7 انتخاب کرده ایم). بنابراین، یک کلاس با نام Globals ساخته ایم :
 
آخرین ویرایش:

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
110.jpg

کدهای این کلاس (class)، به صورن زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.favorites[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Application[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Globals [B]extends[/B] Application [COLOR=#009900]{[/COLOR]

        [B]public[/B] [COLOR=#000066][B]int[/B][/COLOR] Subjects_total_number [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]7[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
در هر Activity که خواستیم نعداد کل مبحث ها را از کلاس Globals فراخوانی کنیم، ابتدا دو متغیر به صورت public و به صورت زیر تعریف می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]public[/B] [COLOR=#000066][B]int[/B][/COLOR] Subjects_total_number[COLOR=#339933];[/COLOR]
[B]public[/B] Globals global [COLOR=#339933]=[/COLOR] [B]new[/B] Globals[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
که در آن، global یک شیء (object) ساخته شده از کلاس Globals می باشد. سپس با کد زیر، تعداد کل مبحث ها را در متغیر Subjects_total_number ذخیره می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Subjects_total_number [COLOR=#339933]=[/COLOR] global.[COLOR=#006633]Subjects_total_number[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دقت کنید که نام Subjects_total_number را می توانستیم متفاوت با نام تعریف شده در کلاس Globals تعریف کنیم، اما من ترجیح دادم که یکسان باشند.اکنون نگاهی به کدهای فایل strings.xml می اندازیم :

111.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
کدهای فایل strings.xml به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]resources[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"app_name"[/COLOR][COLOR=#339933]>[/COLOR]Favorites[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"action_settings"[/COLOR][COLOR=#339933]>[/COLOR]Settings[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"hello_world"[/COLOR][COLOR=#339933]>[/COLOR]Hello world[COLOR=#339933]!</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"title_activity_favorites"[/COLOR][COLOR=#339933]>[/COLOR]لیست علاقه مندی ها[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"favorites"[/COLOR][COLOR=#339933]>[/COLOR]لیست علاقه مندی ها[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"title_activity_show__subjects"[/COLOR][COLOR=#339933]>[/COLOR]نمایش  مبحث ها[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"favorites_added"[/COLOR][COLOR=#339933]>[/COLOR]به لیست علاقه مندی ها افزوده شد[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"favorites_removed"[/COLOR][COLOR=#339933]>[/COLOR]از لیست علاقه مندی ها حذف شد[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_1"[/COLOR][COLOR=#339933]>[/COLOR]آموزش اول[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_2"[/COLOR][COLOR=#339933]>[/COLOR]آموزش دوم[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_3"[/COLOR][COLOR=#339933]>[/COLOR]آموزش سوم[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_4"[/COLOR][COLOR=#339933]>[/COLOR]آموزش چهارم[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_5"[/COLOR][COLOR=#339933]>[/COLOR]آموزش پنجم[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_6"[/COLOR][COLOR=#339933]>[/COLOR]آموزش ششم[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_7"[/COLOR][COLOR=#339933]>[/COLOR]آموزش هفتم[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_text_1"[/COLOR][COLOR=#339933]>[/COLOR]متن مربوط به آموزش اول[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_text_2"[/COLOR][COLOR=#339933]>[/COLOR]متن مربوط به آموزش دوم[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_text_3"[/COLOR][COLOR=#339933]>[/COLOR]متن مربوط به آموزش سوم[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_text_4"[/COLOR][COLOR=#339933]>[/COLOR]متن مربوط به آموزش چهارم[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_text_5"[/COLOR][COLOR=#339933]>[/COLOR]متن مربوط به آموزش پنجم[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_text_6"[/COLOR][COLOR=#339933]>[/COLOR]متن مربوط به آموزش ششم[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"subject_text_7"[/COLOR][COLOR=#339933]>[/COLOR]متن مربوط به آموزش هفتم[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
[COLOR=#339933]</[/COLOR]resources[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
دقت شود که نام رشته (string) متناظر با عنوان مبحث های آموزشی را به شکل کلی زیر تعریف می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]subject_N[/FONT]
[/FONT][/COLOR]
که در آن، N برابر شماره مبحث می باشد (از شماره 1 تا 7). همچنین رشته (string) متناظر با متن مبحث های آموزشی، به شکل کلی زیر تعریف می شود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]subject_text_N[/FONT]
[/FONT][/COLOR]
که در آن، N برابر شماره مبحث می باشد (از شماره 1 تا 7).

اینکه در ابتدا، کلاس Globals و همچنین کدهای فایل strings.xml را شرح دادیم، به این دلیل است که چنانچه شما قصد داشته باشید که در آینده تعداد مبحث ها را افزایش بدهید، تنها با این دو سر و کار دارید. مثلا فرض کنید که من بخواهم تعداد مبحث ها را به 10 تا افزایش بدهم، برای این منظور، ابتدا کلاس Globals را باز می کنم و عدد 7 را به 10 تبدیل می کنم و سپس فایل strings.xml را باز کرده و سه رشته برای عنوان مبحث ها (از شماره 8 تا شماره 10) و سه رشته نیز برای متن مبحث ها (از شماره 8 تا شماره 10)، مطابق شکل کلی که شرح داده شد، می سازم.

برای پروژه اندروید، تعدادی عکس به کار برده ایم که در پوشه drawable-hdpi قرار گرفته اند :

112.jpg

عکس arrow.png را در item های ListView مربوط به لیست علاقه مندی ها به کار برده ایم (برای زیبایی بیشتر). عکس هایی که در انتهای نام آنها، کلمه background وجود دارد، به عنوان پس زمینه Activity ها به کار رفته اند و تنها برای زیباتر کردن برنامه اندروید می باشند. ic_launcher.png هم که همان آیکون (icon) برنامه اندروید می باشد. اما دو عکس favorite_selected.png و favorite_not_selected.png مهم می باشند و برای لیست علاقه مندی ها ضروری هستند. این دو عکس، هر دو به شکل ستاره هستند (ستاره ای که در لیست علاقه مندی ها نمایش می دهیم)، یکی به رنگ طلایی و دیگری به صورت سیاه و سفید.
همان طور که قبلا گفتیم، اطلاعات مربوط به لیست علاقه مندی ها (اینکه مباحث در لیست علاقه مندی ها قرار دارند یا خیر) را با استفاده از SharedPreferences ذخیره می کنیم. برای استفاده از SharedPreferences ، یک کلاس (class) با نام Prefs ساخته ایم :

113.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
کدهای کلاس Prefs را به صورت زیر نوشته ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.favorites[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.content.SharedPreferences[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.preference.PreferenceActivity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.preference.PreferenceManager[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Prefs [B]extends[/B] PreferenceActivity [COLOR=#009900]{[/COLOR]
        
        [B]public[/B] [COLOR=#000066][B]int[/B][/COLOR] Subjects_total_number[COLOR=#339933];[/COLOR]
        [B]public[/B] Globals global [COLOR=#339933]=[/COLOR] [B]new[/B] Globals[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    
    @Override
    [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            SharedPreferences prefs [COLOR=#339933]=[/COLOR] PreferenceManager.[COLOR=#006633]getDefaultSharedPreferences[/COLOR][COLOR=#009900]([/COLOR][B]this[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            
            Subjects_total_number [COLOR=#339933]=[/COLOR] global.[COLOR=#006633]Subjects_total_number[/COLOR][COLOR=#339933];[/COLOR]
            
            [COLOR=#666666][I]// for favorites[/I][/COLOR]
            [COLOR=#003399]Boolean[/COLOR] [COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] favorites [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]Boolean[/COLOR] [COLOR=#009900][[/COLOR]Subjects_total_number[COLOR=#009900]][/COLOR][COLOR=#339933];[/COLOR]
            [B]for[/B][COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] x [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]<[/COLOR] Subjects_total_number[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x[COLOR=#339933]++[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
                        [COLOR=#003399]String[/COLOR] each_subject [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        favorites [COLOR=#009900][[/COLOR]x[COLOR=#009900]][/COLOR] [COLOR=#339933]=[/COLOR] prefs.[COLOR=#006633]getBoolean[/COLOR][COLOR=#009900]([/COLOR]each_subject, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]            
    [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
یک آرایه از جنس Boolean و با نام favorites تعریف می کنیم، که هر عنصر آن، متناظر با رشته ای (string) به شکل کلی زیر است :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]subject_N[/FONT]
[/FONT][/COLOR]
که در آن، N برابر شماره مبحث است. چون آرایه از جنس Boolean است، بنابراین هر عنصر از آرایه، می تواند مقدار true یا false داشته باشد که ما مقدار true برای یک مبحث را به این صورت در نظر می گیریم که آن مبحث در لیست علاقه مندی ها قرار دارد و مقدار false را هم به این صورت در نظر می گیریم که آن مبحث در لیست علاقه مندی ها قرار ندارد. مثلا فرض کنید که بخواهیم ببینیم که آیا مبحث شماره 4 در لیست علاقه مندی ها قرار دارد یا نه، برای این منظور، باید ببینیم در آرایه favorites ، عنصری که با رشته subject_4 شناسایی می شود، مقدارش برابر true است یا برابر false . مثلا اگر مقدار false باشد، یعنی مبحث شماره 4 در لیست علاقه مندی قرار ندارد. حال فرض کنید که بخواهیم آن را به لیست علاقه مندی ها اضافه کنیم، بنابراین باید کدهایی بنویسیم که مقدار false متناظر با subject_4 در آرایه favorites ، به مقدار true تبدیل شود.

در صورت تمایل، برای آشنایی بیشتر با SharedPreferences ، نگاهی به کلید زیر بیندازید :
تاپیک ذخیره اطلاعات با SharedPreferences ، در برنامه نویسی اندروید

اکنون بهتر است کد مربوط به نمایش آیکون (icon) لیست علاقه مندی ها در action bar (در نوار بالای برنامه اندروید) را شرح بدهیم، که با اشاره کاربر بر روی آن، به Activity نمایش لیست علاقه مندی ها، منتقل می شود. برای این منظور، فایل menu.xml در پوشه menu از پروزه اندروید را ساخته ایم :

115.jpg

کدهای فایل menu.xml به صورت زیر می باشند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]menu xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR] [COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]item
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/itemFavorites"[/COLOR]
        android[COLOR=#339933]:[/COLOR]icon[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/favorite_selected"[/COLOR]
        android[COLOR=#339933]:[/COLOR]showAsAction[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"ifRoom|withText"[/COLOR]
        android[COLOR=#339933]:[/COLOR]title[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/favorites"[/COLOR][COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]item[COLOR=#339933]>[/COLOR]
[COLOR=#339933]</[/COLOR]menu[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
که در آن، تنها یک item تعریف کرده ایم که عکس متناظر با آن، برابر favorite_selected از پوشه های drawable (یعنی همان عکس ستاره طلایی رنگ) انتخاب شده است و متن متناظر با آن را برابر رشته (string) با نام favorites تعریف شده در فایل strings.xml انتخاب کرده ایم.

ساخت فایل menu.xml ، تنها شیوه نمایش را تعیین کرده است و علاوه بر آن، در هر Activity که می خواهیم آیکون (icon) مورد نظرمان در action bar نمایش داده شود، باید یک سری کد بنویسیم. آن کدها بر اساس دو روش (method) با نام های onCreateOptionsMenu و onOptionsItemSelected می باشند که در بخش پایانی کدهای Activity های برنامه، آنها را نوشته ایم. بنابراین در ادامه که کدهای Activity ها را شرح می دهیم، به آنها نیز توجه داشته باشید. مثلا بخشی از کد فایل MainActivity.java که در این زمینه است را ذکر می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]         @Override
         [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        MenuInflater inflater [COLOR=#339933]=[/COLOR] getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]menu[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onOptionsItemSelected[COLOR=#009900]([/COLOR][COLOR=#003399]MenuItem[/COLOR] item[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]switch[/B] [COLOR=#009900]([/COLOR]item.[COLOR=#006633]getItemId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]itemFavorites[/COLOR][COLOR=#339933]:[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], Favorites.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [B]default[/B][COLOR=#339933]:[/COLOR] 
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]       
        [COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
حال قصد داریم که Activity های برنامه را شرح بدهیم. ابتدا به سراغ Activity با نام MainActivity می رویم که برای نمایش لیست مبحث های موجود در برنامه اندروید به کار می رود (Activity اصلی برنامه اندروید که در ابتدا نمایش داده می شود) :114.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فایل MainActivity.java ، فایل مربوط به Activity می باشد و فایل xml متناظر با آن (که در واقع ساختار گرافیکی Activity را مشخص می کند) نیز، فایل activity_main.xml است. با توجه به اینکه در آن، از یک ListView برای نمایش فهرست مبحث ها استفاده کرده ایم، بنابراین ساختار هر ردیف (هر item) از ListView را هم در فایل list_item_subjects.xml تعیین کرده ایم.

کدهای فایل activity_main.xml به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
     xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
     android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
     android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
     android[COLOR=#339933]:[/COLOR]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/subjects_list_background"[/COLOR]
     android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"vertical"[/COLOR]
     tools[COLOR=#339933]:[/COLOR]context[COLOR=#339933]=[/COLOR][COLOR=#0000FF]".MainActivity"[/COLOR] [COLOR=#339933]>[/COLOR]

     [COLOR=#339933]<!--[/COLOR] [COLOR=#003399]List[/COLOR] [COLOR=#003399]View[/COLOR] [COLOR=#339933]-->[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]ListView[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@android:id/list"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"fill_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR] [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
کدهای فایل list_item_subjects.xml که تعیین کننده ساختار گرافیکی هر ردیف (هر item) از ListView می باشد، عبارت است از :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"horizontal"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]TextView
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/textView1"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"50dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_margin[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"8dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"center"[/COLOR]
        android[COLOR=#339933]:[/COLOR]textSize[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"20sp"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR]ImageView
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/imageView1"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR] [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
کدهای فایل MainActivity.java که همان کدهای java مربوط به Activity است، به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.favorites[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.ListActivity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Context[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.LayoutInflater[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuInflater[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuItem[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.ViewGroup[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.AdapterView[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ArrayAdapter[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ListView[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.TextView[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] ListActivity [COLOR=#009900]{[/COLOR]
        
        [B]public[/B] [COLOR=#003399]ListView[/COLOR] lv[COLOR=#339933];[/COLOR]
        [B]public[/B] Globals global [COLOR=#339933]=[/COLOR] [B]new[/B] Globals[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [B]public[/B] [COLOR=#000066][B]int[/B][/COLOR] Subjects_total_number[COLOR=#339933];[/COLOR]
        [B]public[/B] [COLOR=#003399]String[/COLOR][COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] Subjects[COLOR=#339933];[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

                Subjects_total_number [COLOR=#339933]=[/COLOR] global.[COLOR=#006633]Subjects_total_number[/COLOR][COLOR=#339933];[/COLOR]
                Subjects [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]String[/COLOR][COLOR=#009900][[/COLOR]Subjects_total_number[COLOR=#009900]][/COLOR][COLOR=#339933];[/COLOR]
                [B]for[/B][COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] x [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]<[/COLOR] Subjects_total_number[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]=[/COLOR] x[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        [COLOR=#003399]String[/COLOR] this_subject [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#000066][B]int[/B][/COLOR] resID [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]this_subject, [COLOR=#0000FF]"string"[/COLOR], getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        Subjects[COLOR=#009900][[/COLOR]x[COLOR=#339933]-[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900]][/COLOR] [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]resID[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
                
                setListAdapter[COLOR=#009900]([/COLOR][B]new[/B] MyAdapter[COLOR=#009900]([/COLOR][B]this[/B], 
                                android.[COLOR=#006633]R[/COLOR].[COLOR=#006633]layout[/COLOR].[COLOR=#006633]simple_list_item_1[/COLOR], R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]textView1[/COLOR],
                                Subjects[COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]     
                
                lv [COLOR=#339933]=[/COLOR] getListView[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                lv.[COLOR=#006633]setOnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] AdapterView.[COLOR=#006633]OnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]

            @Override
            [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onItemClick[COLOR=#009900]([/COLOR]AdapterView[COLOR=#339933]<?>[/COLOR] parent, [B]final[/B] [COLOR=#003399]View[/COLOR] view,
                [COLOR=#000066][B]int[/B][/COLOR] position, [COLOR=#000066][B]long[/B][/COLOR] id[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]                        
                        Intent i [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], Show_Subjects.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#003399]String[/COLOR] Subject_number [COLOR=#339933]=[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]position[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
                        i.[COLOR=#006633]putExtra[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"subject_number"[/COLOR], Subject_number[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR]i[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]       
            [COLOR=#009900]}[/COLOR]

          [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                
        [COLOR=#009900]}[/COLOR]
        
        [B]private[/B] [B]class[/B] MyAdapter [B]extends[/B] ArrayAdapter[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR][COLOR=#009900]{[/COLOR]

                [B]public[/B] MyAdapter[COLOR=#009900]([/COLOR][COLOR=#003399]Context[/COLOR] context, [COLOR=#000066][B]int[/B][/COLOR] resource, [COLOR=#000066][B]int[/B][/COLOR] textViewResourceId,
                                [COLOR=#003399]String[/COLOR][COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] strings[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        [B]super[/B][COLOR=#009900]([/COLOR]context, resource, textViewResourceId, strings[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#666666][I]// TODO Auto-generated constructor stub[/I][/COLOR]
                [COLOR=#009900]}[/COLOR]
                
                @Override
                [B]public[/B] [COLOR=#003399]View[/COLOR] getView[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] position, [COLOR=#003399]View[/COLOR] convertView, ViewGroup parent[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        LayoutInflater inflater [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]LayoutInflater[COLOR=#009900])[/COLOR]getSystemService[COLOR=#009900]([/COLOR][COLOR=#003399]Context[/COLOR].[COLOR=#006633]LAYOUT_INFLATER_SERVICE[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#003399]View[/COLOR] row [COLOR=#339933]=[/COLOR] inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]list_item_subjects[/COLOR], parent, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#003399]String[/COLOR][COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] items [COLOR=#339933]=[/COLOR] Subjects[COLOR=#339933];[/COLOR]
                        
                        TextView tv [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]TextView[COLOR=#009900])[/COLOR] row.[COLOR=#006633]findViewById[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]textView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        tv.[COLOR=#006633]setText[/COLOR][COLOR=#009900]([/COLOR]items[COLOR=#009900][[/COLOR]position[COLOR=#009900]][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
                        [B]return[/B] row[COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]       
        [COLOR=#009900]}[/COLOR]
        
        @Override
          [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        MenuInflater inflater [COLOR=#339933]=[/COLOR] getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]menu[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onOptionsItemSelected[COLOR=#009900]([/COLOR][COLOR=#003399]MenuItem[/COLOR] item[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]switch[/B] [COLOR=#009900]([/COLOR]item.[COLOR=#006633]getItemId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]itemFavorites[/COLOR][COLOR=#339933]:[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], Favorites.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [B]default[/B][COLOR=#339933]:[/COLOR] 
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]       
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
اکنون بخش های مهم کدهای فوق را توضیح می دهیم. با کدهای زیر، عنوان مبحث ها را در یک آرایه رشته ای با نام Subjects ذخیره کرده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Subjects_total_number [COLOR=#339933]=[/COLOR] global.[COLOR=#006633]Subjects_total_number[/COLOR][COLOR=#339933];[/COLOR]
Subjects [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]String[/COLOR][COLOR=#009900][[/COLOR]Subjects_total_number[COLOR=#009900]][/COLOR][COLOR=#339933];[/COLOR]
[B]for[/B][COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] x [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]<[/COLOR] Subjects_total_number[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]=[/COLOR] x[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [COLOR=#003399]String[/COLOR] this_subject [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#000066][B]int[/B][/COLOR] resID [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]this_subject, [COLOR=#0000FF]"string"[/COLOR], getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    Subjects[COLOR=#009900][[/COLOR]x[COLOR=#339933]-[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900]][/COLOR] [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]resID[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
کد زیر، چگونکی عمل کردن ListView بعد از اشاره کاربر بر روی یک item از آن را شرح می دهد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]lv.[COLOR=#006633]setOnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] AdapterView.[COLOR=#006633]OnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]

    @Override
    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onItemClick[COLOR=#009900]([/COLOR]AdapterView[COLOR=#339933]<?>[/COLOR] parent, [B]final[/B] [COLOR=#003399]View[/COLOR] view,
        [COLOR=#000066][B]int[/B][/COLOR] position, [COLOR=#000066][B]long[/B][/COLOR] id[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]                        
        Intent i [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], Show_Subjects.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#003399]String[/COLOR] Subject_number [COLOR=#339933]=[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]position[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
        i.[COLOR=#006633]putExtra[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"subject_number"[/COLOR], Subject_number[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        startActivity[COLOR=#009900]([/COLOR]i[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]       
    [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، با استفاده از Intent ، به Activity با نام Show_Subjects منتقل می شویم که همان Activity طراحی شده برای نمایش محتوای مبحث ها می باشد. آن Activity ، یک رشته شامل شماره مبحث مورد نظر را دریافت می کند و سپس بر اساس آن شماره، محتویات مبحث را نمایش می دهد. بنابراین ما شماره متناظر با item اشاره شده را با نام subject_number به Show_Subjects می فرستیم. یعنی با این خط از کدها :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]i.[COLOR=#006633]putExtra[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"subject_number"[/COLOR], Subject_number[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کلاس MyAdapter ، این خط از کدها مهم می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]String[/COLOR][COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] items [COLOR=#339933]=[/COLOR] Subjects[COLOR=#339933];[/COLOR]
                        
TextView tv [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]TextView[COLOR=#009900])[/COLOR] row.[COLOR=#006633]findViewById[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]textView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
tv.[COLOR=#006633]setText[/COLOR][COLOR=#009900]([/COLOR]items[COLOR=#009900][[/COLOR]position[COLOR=#009900]][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
که توسط آنها، عنوان مبحث ها را در TextView تعریف شده در فایل list_item_subjects.xml (که برای ساختار هر ردیف از ListView می باشد) نمایش می دهیم.

اکنون قصد داریم Activity ساخته شده برای نمایش محتوای مبحث ها را شرح بدهیم که دارای نام Show_Subjects می باشد :
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
116.jpg

فایل مربوط به این Activity ، دارای نام Show_Subjects.java می باشد و نام فایل xml متناظر با آن برابر show_subjects.xml است.

کدهای فایل show_subjects.xml عبارتند از :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/subjects_background"[/COLOR]
    android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"vertical"[/COLOR]
    tools[COLOR=#339933]:[/COLOR]context[COLOR=#339933]=[/COLOR][COLOR=#0000FF]".Show_Subjects"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]TextView
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/textView1"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_margin[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"8dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"right"[/COLOR]
        android[COLOR=#339933]:[/COLOR]textSize[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"20sp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/hello_world"[/COLOR] [COLOR=#339933]/>[/COLOR]
    
    [COLOR=#339933]<[/COLOR]TextView
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/textView2"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_margin[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"8dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"right"[/COLOR]
        android[COLOR=#339933]:[/COLOR]textSize[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"20sp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/hello_world"[/COLOR] [COLOR=#339933]/>[/COLOR]
    
    [COLOR=#339933]<[/COLOR]TableRow
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/tableRow1"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"center"[/COLOR] [COLOR=#339933]>[/COLOR]

        [COLOR=#339933]<[/COLOR]ImageView
            android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/imageView1"[/COLOR]
            android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
            android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
            android[COLOR=#339933]:[/COLOR]src[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/favorite_not_selected"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]</[/COLOR]TableRow[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
که شامل دو TextView است که یکی برای نمایش عنوان مبحث و دیگری برای نمایش متن مبحث به کار می رود. در زیر آن دو، یک ImageView قرار می گیرد که عکس ستاره را به ما نمایش می دهد و بر اساس رنگ ستاره، می توانیم تشخیص بدهیم که این مبحث در لیست علاقه مندی ها وجود دارد یا خیر و با اشاره بر روی آن، می توانیم به لیست اضافه کنیم و یا از لیست حذفش کنیم (توضیحات کامل را در ابتدای همین مبحث آموزشی، با عکس ها، شرح دادیم).

کدهای فایل Show_Subjects.java عبارتند از :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.favorites[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.SharedPreferences[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuInflater[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuItem[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View.OnClickListener[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ImageView[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.TextView[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.Toast[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Show_Subjects [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]
        
        [B]public[/B] [COLOR=#003399]String[/COLOR] Subject_number[COLOR=#339933];[/COLOR]
        [B]public[/B] SharedPreferences shared[COLOR=#339933];[/COLOR]
        [B]public[/B] SharedPreferences.[COLOR=#006633]Editor[/COLOR] editor[COLOR=#339933];[/COLOR]
        Globals global [COLOR=#339933]=[/COLOR] [B]new[/B] Globals[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [B]public[/B] ImageView iv_favorites[COLOR=#339933];[/COLOR]

    @Override
    [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]show_subjects[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
        iv_favorites [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]ImageView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]imageView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
        Bundle extras [COLOR=#339933]=[/COLOR] getIntent[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getExtras[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [B]if[/B] [COLOR=#009900]([/COLOR]extras [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        Subject_number [COLOR=#339933]=[/COLOR] extras.[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"subject_number"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
                [COLOR=#009900]}[/COLOR]
                
                TextView tv1 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]TextView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]textView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#003399]String[/COLOR] stringName_1 [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]Subject_number[COLOR=#009900])[/COLOR][COLOR=#339933];;[/COLOR]
                [COLOR=#000066][B]int[/B][/COLOR] resID_1 [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]stringName_1, [COLOR=#0000FF]"string"[/COLOR], getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                tv1.[COLOR=#006633]setText[/COLOR][COLOR=#009900]([/COLOR]resID_1[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                TextView tv2 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]TextView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]textView2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#003399]String[/COLOR] stringName_2 [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_text_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]Subject_number[COLOR=#009900])[/COLOR][COLOR=#339933];;[/COLOR]
                [COLOR=#000066][B]int[/B][/COLOR] resID_2 [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]stringName_2, [COLOR=#0000FF]"string"[/COLOR], getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                tv2.[COLOR=#006633]setText[/COLOR][COLOR=#009900]([/COLOR]resID_2[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#666666][I]// Favorites[/I][/COLOR]
        shared [COLOR=#339933]=[/COLOR] getSharedPreferences[COLOR=#009900]([/COLOR][COLOR=#0000FF]"Prefs"[/COLOR], MODE_PRIVATE[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        editor [COLOR=#339933]=[/COLOR] shared.[COLOR=#006633]edit[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
        [B]final[/B] [COLOR=#000066][B]int[/B][/COLOR] subject_number_int [COLOR=#339933]=[/COLOR] [COLOR=#003399]Integer[/COLOR].[COLOR=#006633]parseInt[/COLOR][COLOR=#009900]([/COLOR]Subject_number[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [B]final[/B] [COLOR=#003399]String[/COLOR] this_subject [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]subject_number_int[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
        [B]final[/B] [COLOR=#003399]Boolean[/COLOR] b1 [COLOR=#339933]=[/COLOR] shared.[COLOR=#006633]getBoolean[/COLOR][COLOR=#009900]([/COLOR]this_subject, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [B]if[/B] [COLOR=#009900]([/COLOR]b1[COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
                iv_favorites.[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]drawable[/COLOR].[COLOR=#006633]favorite_selected[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR][B]else[/B][COLOR=#009900]{[/COLOR]
                        iv_favorites.[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]drawable[/COLOR].[COLOR=#006633]favorite_not_selected[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
        
        iv_favorites.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        
                        @Override
                        [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] v[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                [COLOR=#003399]Boolean[/COLOR] b2 [COLOR=#339933]=[/COLOR] shared.[COLOR=#006633]getBoolean[/COLOR][COLOR=#009900]([/COLOR]this_subject, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                [B]if[/B] [COLOR=#009900]([/COLOR]b2[COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
                                    editor.[COLOR=#006633]putBoolean[/COLOR][COLOR=#009900]([/COLOR]this_subject, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                    editor.[COLOR=#006633]apply[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                    iv_favorites.[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]drawable[/COLOR].[COLOR=#006633]favorite_not_selected[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                    [COLOR=#666666][I]// show message[/I][/COLOR]
                                    [COLOR=#003399]String[/COLOR] message [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]string[/COLOR].[COLOR=#006633]favorites_removed[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                    Toast.[COLOR=#006633]makeText[/COLOR][COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], message, Toast.[COLOR=#006633]LENGTH_SHORT[/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]show[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                [COLOR=#009900]}[/COLOR][B]else[/B][COLOR=#009900]{[/COLOR]
                                        editor.[COLOR=#006633]putBoolean[/COLOR][COLOR=#009900]([/COLOR]this_subject, [COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                        editor.[COLOR=#006633]apply[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                        iv_favorites.[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]drawable[/COLOR].[COLOR=#006633]favorite_selected[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                        [COLOR=#666666][I]// show message[/I][/COLOR]
                                        [COLOR=#003399]String[/COLOR] message [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]string[/COLOR].[COLOR=#006633]favorites_added[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                        Toast.[COLOR=#006633]makeText[/COLOR][COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], message, Toast.[COLOR=#006633]LENGTH_SHORT[/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]show[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                [COLOR=#009900]}[/COLOR]
                    [COLOR=#009900]}[/COLOR]
                [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]


    @Override
          [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        MenuInflater inflater [COLOR=#339933]=[/COLOR] getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]menu[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onOptionsItemSelected[COLOR=#009900]([/COLOR][COLOR=#003399]MenuItem[/COLOR] item[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]switch[/B] [COLOR=#009900]([/COLOR]item.[COLOR=#006633]getItemId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]itemFavorites[/COLOR][COLOR=#339933]:[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]Show_Subjects.[B]this[/B], Favorites.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [B]default[/B][COLOR=#339933]:[/COLOR] 
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]       
        [COLOR=#009900]}[/COLOR]
    
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
بخش های مهم کدها را در ادامه شرح می دهیم.

با کدهای زیر، ابتدا شماره مبحث را که با نام subject_number به این Activity ارسال کرده ایم، دریافت کرده و سپس بر اساس آن، عنوان مبحث و همچنین متن مبحث را از فایل strings.xml فراخوانی کرده و در دو TextView نمایش می دهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Bundle extras [COLOR=#339933]=[/COLOR] getIntent[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getExtras[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]if[/B] [COLOR=#009900]([/COLOR]extras [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    Subject_number [COLOR=#339933]=[/COLOR] extras.[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"subject_number"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] 
[COLOR=#009900]}[/COLOR]
                
TextView tv1 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]TextView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]textView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]String[/COLOR] stringName_1 [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]Subject_number[COLOR=#009900])[/COLOR][COLOR=#339933];;[/COLOR]
[COLOR=#000066][B]int[/B][/COLOR] resID_1 [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]stringName_1, [COLOR=#0000FF]"string"[/COLOR], getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
tv1.[COLOR=#006633]setText[/COLOR][COLOR=#009900]([/COLOR]resID_1[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
TextView tv2 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]TextView[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]textView2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]String[/COLOR] stringName_2 [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_text_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]Subject_number[COLOR=#009900])[/COLOR][COLOR=#339933];;[/COLOR]
[COLOR=#000066][B]int[/B][/COLOR] resID_2 [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]stringName_2, [COLOR=#0000FF]"string"[/COLOR], getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
tv2.[COLOR=#006633]setText[/COLOR][COLOR=#009900]([/COLOR]resID_2[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
با کدهای زیر، بر اساس SharedPreferences ، چک می کنیم که آیا مبحث در لیست علاقه مندی ها قرار دارد یا نه (بر اساس مقدار true یا false ذخیره شده) و سپس بر اساس آن، شکل مناسب برای نمایش یکی از دو عکس ستاره (طلایی یا سیاه و سفید) را در ImageView نمایش می دهیم تا کاربر، وضعیت مبحث از نظر قرارگیری در لیست علاقه مندی ها را بداند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#666666][I]// Favorites[/I][/COLOR]
shared [COLOR=#339933]=[/COLOR] getSharedPreferences[COLOR=#009900]([/COLOR][COLOR=#0000FF]"Prefs"[/COLOR], MODE_PRIVATE[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
editor [COLOR=#339933]=[/COLOR] shared.[COLOR=#006633]edit[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
[B]final[/B] [COLOR=#000066][B]int[/B][/COLOR] subject_number_int [COLOR=#339933]=[/COLOR] [COLOR=#003399]Integer[/COLOR].[COLOR=#006633]parseInt[/COLOR][COLOR=#009900]([/COLOR]Subject_number[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]final[/B] [COLOR=#003399]String[/COLOR] this_subject [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]subject_number_int[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
[B]final[/B] [COLOR=#003399]Boolean[/COLOR] b1 [COLOR=#339933]=[/COLOR] shared.[COLOR=#006633]getBoolean[/COLOR][COLOR=#009900]([/COLOR]this_subject, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]if[/B] [COLOR=#009900]([/COLOR]b1[COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
    iv_favorites.[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]drawable[/COLOR].[COLOR=#006633]favorite_selected[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][B]else[/B][COLOR=#009900]{[/COLOR]
    iv_favorites.[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]drawable[/COLOR].[COLOR=#006633]favorite_not_selected[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
کدهای زیر، برای تغییر وضعیت مبحث از نظر قرارگیری در لیست علاقه مندی ها می باشد (تغییر مقدار ذخیره شده توسط SharedPreferences و همچنین تغییر شکل فعلی نمایش داده شده)، زیرا اگر کاربر بر روی شکل ستاره اشاره کند، باید وضعیت آن مبحث تغییر داده شود و شکل نمایش داده شده در ImageView نیز عوض شود. همچنین یک پیام کوتاه نیز توسط روش Toast به کاربر نمایش داده می شود تا تغییر وضعیت را تذکر بدهد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]iv_favorites.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        
    @Override
    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] v[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [COLOR=#003399]Boolean[/COLOR] b2 [COLOR=#339933]=[/COLOR] shared.[COLOR=#006633]getBoolean[/COLOR][COLOR=#009900]([/COLOR]this_subject, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [B]if[/B] [COLOR=#009900]([/COLOR]b2[COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
            editor.[COLOR=#006633]putBoolean[/COLOR][COLOR=#009900]([/COLOR]this_subject, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            editor.[COLOR=#006633]apply[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            iv_favorites.[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]drawable[/COLOR].[COLOR=#006633]favorite_not_selected[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#666666][I]// show message[/I][/COLOR]
            [COLOR=#003399]String[/COLOR] message [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]string[/COLOR].[COLOR=#006633]favorites_removed[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            Toast.[COLOR=#006633]makeText[/COLOR][COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], message, Toast.[COLOR=#006633]LENGTH_SHORT[/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]show[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR][B]else[/B][COLOR=#009900]{[/COLOR]
            editor.[COLOR=#006633]putBoolean[/COLOR][COLOR=#009900]([/COLOR]this_subject, [COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            editor.[COLOR=#006633]apply[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            iv_favorites.[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]drawable[/COLOR].[COLOR=#006633]favorite_selected[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#666666][I]// show message[/I][/COLOR]
            [COLOR=#003399]String[/COLOR] message [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]string[/COLOR].[COLOR=#006633]favorites_added[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            Toast.[COLOR=#006633]makeText[/COLOR][COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], message, Toast.[COLOR=#006633]LENGTH_SHORT[/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]show[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
    [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
حال می خواهیم کدهای Activity در نظر گرفته شده برای نمایش لیست علاقه مندی ها را شرح بدهیم. این Activity دارای نام Favorites می باشد :

117.jpg

فایل مربوط به این Activity ، دارای نام Favorites.java می باشد و فایل xml متناظر با آن، فایل favorites.xml است. این Activity بر اساس یک ListView ، فهرست مبحث های قرار گرفته در لیست علاقه مندی ها را نمایش می دهد. فایل list_item_favorites.xml ساختار گرافیکی هر ردیف (هر item) از این ListView را تعیین می کند.

کدهای فایل list_item_favorites.xml عبارتند از :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"vertical"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]TableRow
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/tableRow1"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR] [COLOR=#339933]>[/COLOR]

        [COLOR=#339933]<[/COLOR]ImageView
            android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/imageView1"[/COLOR]
            android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
            android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
            android[COLOR=#339933]:[/COLOR]layout_marginLeft[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"10dp"[/COLOR]
            android[COLOR=#339933]:[/COLOR]src[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/arrow"[/COLOR] [COLOR=#339933]/>[/COLOR]

        [COLOR=#339933]<[/COLOR]TextView android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/favorites_textView"[/COLOR]
            android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"fill_parent"[/COLOR]
            android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
            android[COLOR=#339933]:[/COLOR]padding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"10dip"[/COLOR]
            android[COLOR=#339933]:[/COLOR]textSize[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"16dip"[/COLOR]
            android[COLOR=#339933]:[/COLOR]textStyle[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"bold"[/COLOR][COLOR=#339933]/>[/COLOR]
    
    [COLOR=#339933]</[/COLOR]TableRow[COLOR=#339933]>[/COLOR]
 
[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
برای زیبایی بیشتر، عکس یک فلش را نیز در ساختار هر ردیف از ListView قرار داده ایم (در ImageView).

کدهای فایل favorites.xml عبارتند از :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"fill_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"fill_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/favorites_background"[/COLOR]
    android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"vertical"[/COLOR] [COLOR=#339933]>[/COLOR]
    
    [COLOR=#339933]<!--[/COLOR] [COLOR=#003399]List[/COLOR] [COLOR=#003399]View[/COLOR] [COLOR=#339933]-->[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]ListView[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/list_view"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"fill_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR] [COLOR=#339933]/>[/COLOR]
  
[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
کدهای فایل Favorites.java عبارتند از :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.favorites[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]java.util.ArrayList[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]java.util.List[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.SharedPreferences[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuInflater[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.MenuItem[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.AdapterView[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ArrayAdapter[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ListView[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] Favorites [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]
        
        [B]public[/B] [COLOR=#000066][B]int[/B][/COLOR] Subjects_total_number[COLOR=#339933];[/COLOR]
        [B]public[/B] Globals global [COLOR=#339933]=[/COLOR] [B]new[/B] Globals[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [B]public[/B] List[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR] Favorites_numbers[COLOR=#339933];[/COLOR]
        [B]public[/B] List[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR] Favorites_strings[COLOR=#339933];[/COLOR]
        
        [COLOR=#666666][I]// List view[/I][/COLOR]
    [B]private[/B] [COLOR=#003399]ListView[/COLOR] lv[COLOR=#339933];[/COLOR]
     
    [COLOR=#666666][I]// Listview Adapter[/I][/COLOR]
    ArrayAdapter[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR] adapter[COLOR=#339933];[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]favorites[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#666666][I]// Listview Data[/I][/COLOR]
                Favorites_strings [COLOR=#339933]=[/COLOR] [B]new[/B] ArrayList[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                Favorites_numbers [COLOR=#339933]=[/COLOR] [B]new[/B] ArrayList[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [B]final[/B] SharedPreferences shared [COLOR=#339933]=[/COLOR] getSharedPreferences[COLOR=#009900]([/COLOR][COLOR=#0000FF]"Prefs"[/COLOR], MODE_PRIVATE[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                Subjects_total_number [COLOR=#339933]=[/COLOR] global.[COLOR=#006633]Subjects_total_number[/COLOR][COLOR=#339933];[/COLOR]
                [B]for[/B][COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] x [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]<[/COLOR] Subjects_total_number[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]=[/COLOR] x[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]  
                        [COLOR=#003399]String[/COLOR] each_subject [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#003399]Boolean[/COLOR] b [COLOR=#339933]=[/COLOR] shared.[COLOR=#006633]getBoolean[/COLOR][COLOR=#009900]([/COLOR]each_subject, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [B]if[/B][COLOR=#009900]([/COLOR]b[COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
                            [COLOR=#003399]String[/COLOR] this_subject [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    [COLOR=#000066][B]int[/B][/COLOR] resID [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]this_subject, [COLOR=#0000FF]"string"[/COLOR], getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    Favorites_strings.[COLOR=#006633]add[/COLOR][COLOR=#009900]([/COLOR]getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]resID[COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#003399]String[/COLOR] x_string [COLOR=#339933]=[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        Favorites_numbers.[COLOR=#006633]add[/COLOR][COLOR=#009900]([/COLOR]x_string[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#009900]}[/COLOR]
                [COLOR=#009900]}[/COLOR]
                
                
         
        lv [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]ListView[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]list_view[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         
        [COLOR=#666666][I]// Adding items to listview[/I][/COLOR]
        adapter [COLOR=#339933]=[/COLOR] [B]new[/B] ArrayAdapter[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR][COLOR=#009900]([/COLOR][B]this[/B], R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]list_item_favorites[/COLOR], R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]favorites_textView[/COLOR], Favorites_strings[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        lv.[COLOR=#006633]setAdapter[/COLOR][COLOR=#009900]([/COLOR]adapter[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
                
        lv.[COLOR=#006633]setOnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] AdapterView.[COLOR=#006633]OnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]

            @Override
            [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onItemClick[COLOR=#009900]([/COLOR]AdapterView[COLOR=#339933]<?>[/COLOR] parent, [B]final[/B] [COLOR=#003399]View[/COLOR] view,
                [COLOR=#000066][B]int[/B][/COLOR] position, [COLOR=#000066][B]long[/B][/COLOR] id[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#003399]String[/COLOR] favorite_number [COLOR=#339933]=[/COLOR] Favorites_numbers.[COLOR=#006633]get[/COLOR][COLOR=#009900]([/COLOR]position[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                Intent i [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], Show_Subjects.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                i.[COLOR=#006633]putExtra[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"subject_number"[/COLOR], favorite_number[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                                startActivity[COLOR=#009900]([/COLOR]i[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#009900]}[/COLOR]

          [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        
        
        @Override
          [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        MenuInflater inflater [COLOR=#339933]=[/COLOR] getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]menu[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        @Override
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onOptionsItemSelected[COLOR=#009900]([/COLOR][COLOR=#003399]MenuItem[/COLOR] item[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]switch[/B] [COLOR=#009900]([/COLOR]item.[COLOR=#006633]getItemId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]itemFavorites[/COLOR][COLOR=#339933]:[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]Favorites.[B]this[/B], Favorites.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [B]default[/B][COLOR=#339933]:[/COLOR] 
                        [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]       
        [COLOR=#009900]}[/COLOR]

        

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
بخش های مهم کدها را در ادامه شرح می دهیم.

در کدهای زیر، ابتدا بر اساس اطلاعاتی که توسط SharedPreferences ذخیره شده اند، مبحث هایی را که جزء لیست علاقه مندی ها می باشند را تشخیص داده و عنوان آنها و همچنین شماره آنها را در دو آرایه با نام های Favorites_strings و Favorites_numbers ذخیره می کنیم تا برای نمایش در ListView به کار روند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#666666][I]// Listview Data[/I][/COLOR]
Favorites_strings [COLOR=#339933]=[/COLOR] [B]new[/B] ArrayList[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
Favorites_numbers [COLOR=#339933]=[/COLOR] [B]new[/B] ArrayList[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]final[/B] SharedPreferences shared [COLOR=#339933]=[/COLOR] getSharedPreferences[COLOR=#009900]([/COLOR][COLOR=#0000FF]"Prefs"[/COLOR], MODE_PRIVATE[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
Subjects_total_number [COLOR=#339933]=[/COLOR] global.[COLOR=#006633]Subjects_total_number[/COLOR][COLOR=#339933];[/COLOR]
[B]for[/B][COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] x [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]<[/COLOR] Subjects_total_number[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR] x [COLOR=#339933]=[/COLOR] x[COLOR=#339933]+[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]  
    [COLOR=#003399]String[/COLOR] each_subject [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#003399]Boolean[/COLOR] b [COLOR=#339933]=[/COLOR] shared.[COLOR=#006633]getBoolean[/COLOR][COLOR=#009900]([/COLOR]each_subject, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [B]if[/B][COLOR=#009900]([/COLOR]b[COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
        [COLOR=#003399]String[/COLOR] this_subject [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"subject_"[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#000066][B]int[/B][/COLOR] resID [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]this_subject, [COLOR=#0000FF]"string"[/COLOR], getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        Favorites_strings.[COLOR=#006633]add[/COLOR][COLOR=#009900]([/COLOR]getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]resID[COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#003399]String[/COLOR] x_string [COLOR=#339933]=[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]x[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        Favorites_numbers.[COLOR=#006633]add[/COLOR][COLOR=#009900]([/COLOR]x_string[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
کدهای زیر تعیین کرده است که اگر کاربر بر روی یک مبحث اشاره کرد، به Activity مخصوص نمایش محتوای مبحث ها منتقل بشود (Activity با نام Show_Subjects) و محتوای مبحث را ببیند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]lv.[COLOR=#006633]setOnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] AdapterView.[COLOR=#006633]OnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]

    @Override
    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onItemClick[COLOR=#009900]([/COLOR]AdapterView[COLOR=#339933]<?>[/COLOR] parent, [B]final[/B] [COLOR=#003399]View[/COLOR] view,
        [COLOR=#000066][B]int[/B][/COLOR] position, [COLOR=#000066][B]long[/B][/COLOR] id[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [COLOR=#003399]String[/COLOR] favorite_number [COLOR=#339933]=[/COLOR] Favorites_numbers.[COLOR=#006633]get[/COLOR][COLOR=#009900]([/COLOR]position[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        Intent i [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], Show_Subjects.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        i.[COLOR=#006633]putExtra[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"subject_number"[/COLOR], favorite_number[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        startActivity[COLOR=#009900]([/COLOR]i[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دقت شود که شماره مبحث را با نام subject_number ، به Show_Subjects فرستاده ایم زیرا Show_Subjects شماره مبحث را دریافت کرده و سپس محتوای آن را نمایش می دهد.

فایل های پروژه اندروید را می توانید از لینک های زیر دریافت کنید :
 

پیوست ها

  • 136.zip
    983.5 کیلوبایت · بازدیدها: 0
  • 137.rar
    247.2 کیلوبایت · بازدیدها: 0

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
نمایش لوگوی برنامه، در ابتدای برنامه اندروید و به مدت چند ثانیه

نمایش لوگوی برنامه، در ابتدای برنامه اندروید و به مدت چند ثانیه

گاهی سازندگان برنامه های اندروید، لوگویی را برای شرکت خود انتخاب می کنند که به محض ورود کاربر به برنامه اندروید، این لوگو حدود چند ثانیه نمایش داده می شود و سپس منوی برنامه اندروید، به کاربر نمایش داده خواهد شد. در این آموزش قصد داریم که نحوه ساخت اینگونه لوگوها در برنامه اندروید را شرح بدهیم.

برای طراحی لوگو برای برنامه اندروید، activity اصلی برنامه اندروید را با پس زمینه لوگو می سازیم (یعنی لوگو را به صورت یک عکس می سازیم و سپس در activity اصلی، Background را برابر آن عکس انتخاب می کنیم) و سپس در فایل java مربوط به activity اصلی، کدهای زیر را می نویسیم (فرض کرده ایم که activity اصلی، دارای نام MainActivity می باشد) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]new[/B] CountDownTimer[COLOR=#009900]([/COLOR][COLOR=#CC66CC]5000[/COLOR],[COLOR=#CC66CC]1000[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
    @Override
    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onTick[COLOR=#009900]([/COLOR][COLOR=#000066][B]long[/B][/COLOR] millisUntilFinished[COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR][COLOR=#009900]}[/COLOR] 

    @Override
        [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onFinish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
        [COLOR=#666666][I]//set the new Content of your activity[/I][/COLOR]
        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], Activity_menu.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR].[COLOR=#006633]start[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
Activity_menu همان نام Activity بعدی (منوی برنامه اندروید) است که پس از لوگو، نمایش داده می شود. دقت شود که کد بالا در روش onCreate از Activity نوشته خواهد شد.

همچنین، برای اینکه در هنگام خروج از برنامه اندروید، لوگوی برنامه نمایش داده نشود، باید در activity مربوط به لوگو، روش onStop را به صورت زیر به کار ببریم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]@Override
[B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onStop[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [B]super[/B].[COLOR=#006633]onStop[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    finish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین طبق نکات گفته شده، ساختار کدنویسی برای یک Activity با نام دلخواه (به همراه کدهای مربوط به نمایش لوگو)، باید مشابه کد زیر باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.com[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.CountDownTimer[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [B]new[/B] CountDownTimer[COLOR=#009900]([/COLOR][COLOR=#CC66CC]5000[/COLOR],[COLOR=#CC66CC]1000[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
                    @Override
                    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onTick[COLOR=#009900]([/COLOR][COLOR=#000066][B]long[/B][/COLOR] millisUntilFinished[COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR][COLOR=#009900]}[/COLOR] 

                    @Override
                        [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onFinish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
                        [COLOR=#666666][I]//set the new Content of your activity[/I][/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][B]new[/B] Intent[COLOR=#009900]([/COLOR]MainActivity.[B]this[/B], Activity_menu.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    [COLOR=#009900]}[/COLOR]
                [COLOR=#009900]}[/COLOR].[COLOR=#006633]start[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
        [COLOR=#009900]}[/COLOR]

        
        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onStop[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [B]super[/B].[COLOR=#006633]onStop[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            finish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
در صورت عدم آشنایی با عملکرد روش های onCreate و onStop از Activity ، توصیه می کنم تاپیک کار با Activity ها ، در برنامه نویسی اندروید را بخوانید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ساخت Sliding Menu (یا Navigation Drawer)، با استفاده از کتابخانه ActionBarSherlock (قابل استفاده برای برخی api های پایین)

ساخت Sliding Menu (یا Navigation Drawer)، با استفاده از کتابخانه ActionBarSherlock (قابل استفاده برای برخی api های پایین)

در پست بعد، Sliding Menu را معرفی کردیم و یک پروژه اندروید را برای آن ارائه کردیم. در این مبحث نیز قصد داریم پروژه اندروید دیگری را معرفی کنیم که می تواند در برخی api های پایین نیز به درستی عمل کند.
این پروژه اندروید، از کتابخانه ActionBarSherlock استفاده می کند. فایل پروژه را می توانید از لینک زیر دریافت نمایید :


مشاهده پیوست 254.zip
مشاهده پیوست 255.rar

دقت کنید که دو پروژه اندروید در فایل zip شده قرار دارد که باید یکی را به صورت کتابخانه (library) به کار ببرید ( تاپیک مباحث عمومی در برنامه نویسی اندروید ).

1467.jpg

1468.jpg

اما بهتر است که کمی در مورد شیوه استفاده از کدهای آن توضیح بدهیم.شما باید ابتدا کتابخانه ActionBarSherlock را برای پروژه اندروید خود به عنوان library معرفی کنید.

اکنون برای شرح کدهایی که باید به کار روی، کدهای خود پروژه بالا را ذکر می کنیم. کدهای Activity (یا در واقع SherlockFragmentActivity) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#666666][I]/*
 * Copyright 2013 The Android Open Source Project
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */[/I][/COLOR]

[B]package[/B] [COLOR=#006699]com.example.android.navigationdrawerexample[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]java.util.Locale[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.SearchManager[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.content.res.Configuration[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.graphics.drawable.Drawable[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.support.v4.app.ActionBarDrawerToggle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.support.v4.app.Fragment[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.support.v4.app.FragmentManager[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.support.v4.view.GravityCompat[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.support.v4.widget.DrawerLayout[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.ActionProvider[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.ContextMenu.ContextMenuInfo[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.LayoutInflater[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.SubMenu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.view.ViewGroup[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.AdapterView[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ArrayAdapter[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ImageView[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.ListView[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.Toast[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]com.actionbarsherlock.app.SherlockActivity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]com.actionbarsherlock.app.SherlockFragment[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]com.actionbarsherlock.app.SherlockFragmentActivity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]com.actionbarsherlock.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]com.actionbarsherlock.view.MenuInflater[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]com.actionbarsherlock.view.MenuItem[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#008000][B][I]/**
 * This example illustrates a common usage of the DrawerLayout widget
 * in the Android support library.
 * <p/>
 * <p>
 * When a navigation (left) drawer is present, the host activity should detect
 * presses of the action bar's Up affordance as a signal to open and close the
 * navigation drawer. The ActionBarDrawerToggle facilitates this behavior. Items
 * within the drawer should fall into one of two categories:
 * </p>
 * <p/>
 * <ul>
 * <li><strong>View switches</strong>. A view switch follows the same basic
 * policies as list or tab navigation in that a view switch does not create
 * navigation history. This pattern should only be used at the root activity of
 * a task, leaving some form of Up navigation active for activities further down
 * the navigation hierarchy.</li>
 * <li><strong>Selective Up</strong>. The drawer allows the user to choose an
 * alternate parent for Up navigation. This allows a user to jump across an
 * app's navigation hierarchy at will. The application should treat this as it
 * treats Up navigation from a different task, replacing the current task stack
 * using TaskStackBuilder or similar. This is the only form of navigation drawer
 * that should be used outside of the root activity of a task.</li>
 * </ul>
 * <p/>
 * <p>
 * Right side drawers should be used for actions, not navigation. This follows
 * the pattern established by the Action Bar that navigation should be to the
 * left and actions to the right. An action should be an operation performed on
 * the current contents of the window, for example enabling or disabling a data
 * overlay on top of the current content.
 * </p>
 */[/I][/B][/COLOR]
[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] SherlockFragmentActivity [COLOR=#009900]{[/COLOR]
   [B]private[/B] DrawerLayout mDrawerLayout[COLOR=#339933];[/COLOR]
   [B]private[/B] [COLOR=#003399]ListView[/COLOR] mDrawerList[COLOR=#339933];[/COLOR]
   [B]private[/B] ActionBarDrawerToggle mDrawerToggle[COLOR=#339933];[/COLOR]

   [B]private[/B] CharSequence mDrawerTitle[COLOR=#339933];[/COLOR]
   [B]private[/B] CharSequence mTitle[COLOR=#339933];[/COLOR]
   [B]private[/B] [COLOR=#003399]String[/COLOR][COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] mPlanetTitles[COLOR=#339933];[/COLOR]

   @Override
   [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
      [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

      mTitle [COLOR=#339933]=[/COLOR] mDrawerTitle [COLOR=#339933]=[/COLOR] getTitle[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      mPlanetTitles [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getStringArray[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]array[/COLOR].[COLOR=#006633]planets_array[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      mDrawerLayout [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]DrawerLayout[COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]drawer_layout[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      mDrawerList [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]ListView[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]left_drawer[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

      [COLOR=#666666][I]// set a custom shadow that overlays the main content when the drawer[/I][/COLOR]
      [COLOR=#666666][I]// opens[/I][/COLOR]
      mDrawerLayout.[COLOR=#006633]setDrawerShadow[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]drawable[/COLOR].[COLOR=#006633]drawer_shadow[/COLOR], GravityCompat.[COLOR=#006633]START[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      [COLOR=#666666][I]// set up the drawer's list view with items and click listener[/I][/COLOR]
      mDrawerList.[COLOR=#006633]setAdapter[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] ArrayAdapter[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR][COLOR=#009900]([/COLOR][B]this[/B], R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]drawer_list_item[/COLOR], mPlanetTitles[COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      mDrawerList.[COLOR=#006633]setOnItemClickListener[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] DrawerItemClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

      [COLOR=#666666][I]// enable ActionBar app icon to behave as action to toggle nav drawer[/I][/COLOR]
      getSupportActionBar[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setDisplayHomeAsUpEnabled[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      getSupportActionBar[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setHomeButtonEnabled[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

      [COLOR=#666666][I]// ActionBarDrawerToggle ties together the the proper interactions[/I][/COLOR]
      [COLOR=#666666][I]// between the sliding drawer and the action bar app icon[/I][/COLOR]
      mDrawerToggle [COLOR=#339933]=[/COLOR] [B]new[/B] ActionBarDrawerToggle[COLOR=#009900]([/COLOR][B]this[/B], [COLOR=#666666][I]/* host Activity */[/I][/COLOR]
      mDrawerLayout, [COLOR=#666666][I]/* DrawerLayout object */[/I][/COLOR]
      R.[COLOR=#006633]drawable[/COLOR].[COLOR=#006633]ic_drawer[/COLOR], [COLOR=#666666][I]/* nav drawer image to replace 'Up' caret */[/I][/COLOR]
      R.[COLOR=#006633]string[/COLOR].[COLOR=#006633]drawer_open[/COLOR], [COLOR=#666666][I]/* "open drawer" description for accessibility */[/I][/COLOR]
      R.[COLOR=#006633]string[/COLOR].[COLOR=#006633]drawer_close[/COLOR] [COLOR=#666666][I]/* "close drawer" description for accessibility */[/I][/COLOR]
      [COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
         [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onDrawerClosed[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] view[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            getSupportActionBar[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setTitle[/COLOR][COLOR=#009900]([/COLOR]mTitle[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            supportInvalidateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#666666][I]// creates call to[/I][/COLOR]
                                            [COLOR=#666666][I]// onPrepareOptionsMenu()[/I][/COLOR]
         [COLOR=#009900]}[/COLOR]

         [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onDrawerOpened[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] drawerView[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            getSupportActionBar[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setTitle[/COLOR][COLOR=#009900]([/COLOR]mDrawerTitle[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            supportInvalidateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#666666][I]// creates call to[/I][/COLOR]
                                            [COLOR=#666666][I]// onPrepareOptionsMenu()[/I][/COLOR]
         [COLOR=#009900]}[/COLOR]
      [COLOR=#009900]}[/COLOR][COLOR=#339933];[/COLOR]
      mDrawerLayout.[COLOR=#006633]setDrawerListener[/COLOR][COLOR=#009900]([/COLOR]mDrawerToggle[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

      [B]if[/B] [COLOR=#009900]([/COLOR]savedInstanceState [COLOR=#339933]==[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
         selectItem[COLOR=#009900]([/COLOR][COLOR=#CC66CC]0[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      [COLOR=#009900]}[/COLOR]
   [COLOR=#009900]}[/COLOR]

   @Override
   [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
      MenuInflater inflater [COLOR=#339933]=[/COLOR] getSupportMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]main[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      [B]return[/B] [B]super[/B].[COLOR=#006633]onCreateOptionsMenu[/COLOR][COLOR=#009900]([/COLOR]menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
   [COLOR=#009900]}[/COLOR]

   [COLOR=#666666][I]/* Called whenever we call invalidateOptionsMenu() */[/I][/COLOR]
   @Override
   [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onPrepareOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
      [COLOR=#666666][I]// If the nav drawer is open, hide action items related to the content[/I][/COLOR]
      [COLOR=#666666][I]// view[/I][/COLOR]
      [COLOR=#000066][B]boolean[/B][/COLOR] drawerOpen [COLOR=#339933]=[/COLOR] mDrawerLayout.[COLOR=#006633]isDrawerOpen[/COLOR][COLOR=#009900]([/COLOR]mDrawerList[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      menu.[COLOR=#006633]findItem[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]action_websearch[/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setVisible[/COLOR][COLOR=#009900]([/COLOR][COLOR=#339933]![/COLOR]drawerOpen[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      [B]return[/B] [B]super[/B].[COLOR=#006633]onPrepareOptionsMenu[/COLOR][COLOR=#009900]([/COLOR]menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
   [COLOR=#009900]}[/COLOR]

   @Override
   [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] onOptionsItemSelected[COLOR=#009900]([/COLOR][B]final[/B] [COLOR=#003399]MenuItem[/COLOR] item[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
      [COLOR=#666666][I]// The action bar home/up action should open or close the drawer.[/I][/COLOR]
      [COLOR=#666666][I]// ActionBarDrawerToggle will take care of this.[/I][/COLOR]
      [B]if[/B] [COLOR=#009900]([/COLOR]mDrawerToggle.[COLOR=#006633]onOptionsItemSelected[/COLOR][COLOR=#009900]([/COLOR]getMenuItem[COLOR=#009900]([/COLOR]item[COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR] 
         [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR] 
      [COLOR=#009900]}[/COLOR]

      [COLOR=#666666][I]// Handle action buttons[/I][/COLOR]
      [B]switch[/B] [COLOR=#009900]([/COLOR]item.[COLOR=#006633]getItemId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
         [B]case[/B] R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]action_websearch[/COLOR][COLOR=#339933]:[/COLOR]
            [COLOR=#666666][I]// create intent to perform web search for this planet[/I][/COLOR]
            Intent intent [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]Intent.[COLOR=#006633]ACTION_WEB_SEARCH[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            intent.[COLOR=#006633]putExtra[/COLOR][COLOR=#009900]([/COLOR]SearchManager.[COLOR=#006633]QUERY[/COLOR], getSupportActionBar[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getTitle[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#666666][I]// catch event that there's no activity to handle intent[/I][/COLOR]
            [B]if[/B] [COLOR=#009900]([/COLOR]intent.[COLOR=#006633]resolveActivity[/COLOR][COLOR=#009900]([/COLOR]getPackageManager[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]!=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
               startActivity[COLOR=#009900]([/COLOR]intent[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#009900]}[/COLOR] [B]else[/B] [COLOR=#009900]{[/COLOR]
               Toast.[COLOR=#006633]makeText[/COLOR][COLOR=#009900]([/COLOR][B]this[/B], R.[COLOR=#006633]string[/COLOR].[COLOR=#006633]app_not_available[/COLOR], Toast.[COLOR=#006633]LENGTH_LONG[/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]show[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#009900]}[/COLOR]
            [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
         [B]default[/B][COLOR=#339933]:[/COLOR]
            [B]return[/B] [B]super[/B].[COLOR=#006633]onOptionsItemSelected[/COLOR][COLOR=#009900]([/COLOR]item[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      [COLOR=#009900]}[/COLOR]
   [COLOR=#009900]}[/COLOR]

   [B]private[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] getMenuItem[COLOR=#009900]([/COLOR][B]final[/B] [COLOR=#003399]MenuItem[/COLOR] item[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
      [B]return[/B] [B]new[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
         @Override
         [B]public[/B] [COLOR=#000066][B]int[/B][/COLOR] getItemId[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [B]return[/B] item.[COLOR=#006633]getItemId[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] isEnabled[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [B]return[/B] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] collapseActionView[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]false[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] expandActionView[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]false[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] ActionProvider getActionProvider[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#003399]View[/COLOR] getActionView[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#000066][B]char[/B][/COLOR] getAlphabeticShortcut[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#000066][B]int[/B][/COLOR] getGroupId[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] Drawable getIcon[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] Intent getIntent[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] ContextMenuInfo getMenuInfo[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#000066][B]char[/B][/COLOR] getNumericShortcut[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#000066][B]int[/B][/COLOR] getOrder[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] SubMenu getSubMenu[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] CharSequence getTitle[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] CharSequence getTitleCondensed[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] hasSubMenu[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]false[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] isActionViewExpanded[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]false[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] isCheckable[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]false[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] isChecked[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]false[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] isVisible[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]false[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setActionProvider[COLOR=#009900]([/COLOR]ActionProvider actionProvider[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setActionView[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] view[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setActionView[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] resId[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setAlphabeticShortcut[COLOR=#009900]([/COLOR][COLOR=#000066][B]char[/B][/COLOR] alphaChar[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setCheckable[COLOR=#009900]([/COLOR][COLOR=#000066][B]boolean[/B][/COLOR] checkable[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setChecked[COLOR=#009900]([/COLOR][COLOR=#000066][B]boolean[/B][/COLOR] checked[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setEnabled[COLOR=#009900]([/COLOR][COLOR=#000066][B]boolean[/B][/COLOR] enabled[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setIcon[COLOR=#009900]([/COLOR]Drawable icon[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setIcon[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] iconRes[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setIntent[COLOR=#009900]([/COLOR]Intent intent[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setNumericShortcut[COLOR=#009900]([/COLOR][COLOR=#000066][B]char[/B][/COLOR] numericChar[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setOnActionExpandListener[COLOR=#009900]([/COLOR]OnActionExpandListener listener[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setOnMenuItemClickListener[COLOR=#009900]([/COLOR]OnMenuItemClickListener menuItemClickListener[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setShortcut[COLOR=#009900]([/COLOR][COLOR=#000066][B]char[/B][/COLOR] numericChar, [COLOR=#000066][B]char[/B][/COLOR] alphaChar[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] setShowAsAction[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] actionEnum[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]

         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setShowAsActionFlags[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] actionEnum[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setTitle[COLOR=#009900]([/COLOR]CharSequence title[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setTitle[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] title[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setTitleCondensed[COLOR=#009900]([/COLOR]CharSequence title[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]

         @Override
         [B]public[/B] android.[COLOR=#006633]view[/COLOR].[COLOR=#003399]MenuItem[/COLOR] setVisible[COLOR=#009900]([/COLOR][COLOR=#000066][B]boolean[/B][/COLOR] visible[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
            [B]return[/B] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]}[/COLOR]
      [COLOR=#009900]}[/COLOR][COLOR=#339933];[/COLOR]
   [COLOR=#009900]}[/COLOR]

   [COLOR=#666666][I]/* The click listner for ListView in the navigation drawer */[/I][/COLOR]
   [B]private[/B] [B]class[/B] DrawerItemClickListener [B]implements[/B] [COLOR=#003399]ListView[/COLOR].[COLOR=#006633]OnItemClickListener[/COLOR] [COLOR=#009900]{[/COLOR]
      @Override
      [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onItemClick[COLOR=#009900]([/COLOR]AdapterView[COLOR=#339933]<?>[/COLOR] parent, [COLOR=#003399]View[/COLOR] view, [COLOR=#000066][B]int[/B][/COLOR] position, [COLOR=#000066][B]long[/B][/COLOR] id[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
         selectItem[COLOR=#009900]([/COLOR]position[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      [COLOR=#009900]}[/COLOR]
   [COLOR=#009900]}[/COLOR]

   [B]private[/B] [COLOR=#000066][B]void[/B][/COLOR] selectItem[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] position[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
      [COLOR=#666666][I]// update the main content by replacing fragments[/I][/COLOR]
      Fragment fragment [COLOR=#339933]=[/COLOR] [B]new[/B] PlanetFragment[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      Bundle args [COLOR=#339933]=[/COLOR] [B]new[/B] Bundle[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      args.[COLOR=#006633]putInt[/COLOR][COLOR=#009900]([/COLOR]PlanetFragment.[COLOR=#006633]ARG_PLANET_NUMBER[/COLOR], position[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      fragment.[COLOR=#006633]setArguments[/COLOR][COLOR=#009900]([/COLOR]args[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

      FragmentManager fragmentManager [COLOR=#339933]=[/COLOR] getSupportFragmentManager[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      fragmentManager.[COLOR=#006633]beginTransaction[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]replace[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]content_frame[/COLOR], fragment[COLOR=#009900])[/COLOR].[COLOR=#006633]commit[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

      [COLOR=#666666][I]// update selected item and title, then close the drawer[/I][/COLOR]
      mDrawerList.[COLOR=#006633]setItemChecked[/COLOR][COLOR=#009900]([/COLOR]position, [COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      setTitle[COLOR=#009900]([/COLOR]mPlanetTitles[COLOR=#009900][[/COLOR]position[COLOR=#009900]][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      mDrawerLayout.[COLOR=#006633]closeDrawer[/COLOR][COLOR=#009900]([/COLOR]mDrawerList[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
   [COLOR=#009900]}[/COLOR]

   @Override
   [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] setTitle[COLOR=#009900]([/COLOR]CharSequence title[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
      mTitle [COLOR=#339933]=[/COLOR] title[COLOR=#339933];[/COLOR]
      getSupportActionBar[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setTitle[/COLOR][COLOR=#009900]([/COLOR]mTitle[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
   [COLOR=#009900]}[/COLOR]

   [COLOR=#008000][B][I]/**
    * When using the ActionBarDrawerToggle, you must call it during
    * onPostCreate() and onConfigurationChanged()...
    */[/I][/B][/COLOR]

   @Override
   [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onPostCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
      [B]super[/B].[COLOR=#006633]onPostCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      [COLOR=#666666][I]// Sync the toggle state after onRestoreInstanceState has occurred.[/I][/COLOR]
      mDrawerToggle.[COLOR=#006633]syncState[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
   [COLOR=#009900]}[/COLOR]

   @Override
   [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onConfigurationChanged[COLOR=#009900]([/COLOR]Configuration newConfig[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
      [B]super[/B].[COLOR=#006633]onConfigurationChanged[/COLOR][COLOR=#009900]([/COLOR]newConfig[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      [COLOR=#666666][I]// Pass any configuration change to the drawer toggls[/I][/COLOR]
      mDrawerToggle.[COLOR=#006633]onConfigurationChanged[/COLOR][COLOR=#009900]([/COLOR]newConfig[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
   [COLOR=#009900]}[/COLOR]

   [COLOR=#008000][B][I]/**
    * Fragment that appears in the "content_frame", shows a planet
    */[/I][/B][/COLOR]
   [B]public[/B] [B]static[/B] [B]class[/B] PlanetFragment [B]extends[/B] SherlockFragment [COLOR=#009900]{[/COLOR]
      [B]public[/B] [B]static[/B] [B]final[/B] [COLOR=#003399]String[/COLOR] ARG_PLANET_NUMBER [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"planet_number"[/COLOR][COLOR=#339933];[/COLOR]

      [B]public[/B] PlanetFragment[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
         [COLOR=#666666][I]// Empty constructor required for fragment subclasses[/I][/COLOR]
      [COLOR=#009900]}[/COLOR]

      @Override
      [B]public[/B] [COLOR=#003399]View[/COLOR] onCreateView[COLOR=#009900]([/COLOR]LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
         [COLOR=#003399]View[/COLOR] rootView [COLOR=#339933]=[/COLOR] inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]fragment_planet[/COLOR], container, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#000066][B]int[/B][/COLOR] i [COLOR=#339933]=[/COLOR] getArguments[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getInt[/COLOR][COLOR=#009900]([/COLOR]ARG_PLANET_NUMBER[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#003399]String[/COLOR] planet [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getStringArray[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]array[/COLOR].[COLOR=#006633]planets_array[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900][[/COLOR]i[COLOR=#009900]][/COLOR][COLOR=#339933];[/COLOR]

         [COLOR=#000066][B]int[/B][/COLOR] imageId [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]planet.[COLOR=#006633]toLowerCase[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Locale[/COLOR].[COLOR=#006633]getDefault[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR], [COLOR=#0000FF]"drawable"[/COLOR], getActivity[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getPackageName[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         [COLOR=#009900]([/COLOR][COLOR=#009900]([/COLOR]ImageView[COLOR=#009900])[/COLOR] rootView.[COLOR=#006633]findViewById[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]image[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]imageId[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         getActivity[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]setTitle[/COLOR][COLOR=#009900]([/COLOR]planet[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
         [B]return[/B] rootView[COLOR=#339933];[/COLOR]
      [COLOR=#009900]}[/COLOR]
   [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که تذکر داده شد، اولین نکته این است که کلاس (Class) را باید برابر SherlockFragmentActivity انتخاب کنیم (نه Activity) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]public[/B] [B]class[/B] MainActivity [B]extends[/B] SherlockFragmentActivity [COLOR=#009900]{[/COLOR][/FONT]
[/FONT][/COLOR]
یکی از مشکلاتی که بعد از تغییر کلاس از Activity به SherlockFragmentActivity پیش می آید، این است که قبلا package های مربوط یه Menu عادی import شده اند (و بنابراین برنامه eclipse خطاهایی را نمایش می دهد)، اما ما باید موارد مربوط به SherlockFragmentActivity را import کنیم. بنابراین باید سه package زیر را داشته باشیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]import[/B] [COLOR=#006699]com.actionbarsherlock.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]com.actionbarsherlock.view.MenuInflater[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]com.actionbarsherlock.view.MenuItem[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین package های مشابه با موارد بالا (آنها که برای Activity هستند) را حذف کرده و سپس موارد بالا را به صورت دستی بنویسید و در آخر نیز می توانید کلیدهای Ctrl و Shift و O (بخوانید او) را بزنید تا سایر package ها نیز import شوند.

کد زیر تعیین کرده است که بعد از اشاره بر روی هر یک از گزینه های Sliding Menu (یا در واقع اشاره بر روی item های ListView ای که در آن به کار رفته)، چه کدی اجرا شود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]   [COLOR=#666666][I]/* The click listner for ListView in the navigation drawer */[/I][/COLOR]
   [B]private[/B] [B]class[/B] DrawerItemClickListener [B]implements[/B] [COLOR=#003399]ListView[/COLOR].[COLOR=#006633]OnItemClickListener[/COLOR] [COLOR=#009900]{[/COLOR]
      @Override
      [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onItemClick[COLOR=#009900]([/COLOR]AdapterView[COLOR=#339933]<?>[/COLOR] parent, [COLOR=#003399]View[/COLOR] view, [COLOR=#000066][B]int[/B][/COLOR] position, [COLOR=#000066][B]long[/B][/COLOR] id[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
         selectItem[COLOR=#009900]([/COLOR]position[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      [COLOR=#009900]}[/COLOR]
   [COLOR=#009900]}[/COLOR]

   [B]private[/B] [COLOR=#000066][B]void[/B][/COLOR] selectItem[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] position[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
      [COLOR=#666666][I]// update the main content by replacing fragments[/I][/COLOR]
      Fragment fragment [COLOR=#339933]=[/COLOR] [B]new[/B] PlanetFragment[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      Bundle args [COLOR=#339933]=[/COLOR] [B]new[/B] Bundle[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      args.[COLOR=#006633]putInt[/COLOR][COLOR=#009900]([/COLOR]PlanetFragment.[COLOR=#006633]ARG_PLANET_NUMBER[/COLOR], position[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      fragment.[COLOR=#006633]setArguments[/COLOR][COLOR=#009900]([/COLOR]args[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

      FragmentManager fragmentManager [COLOR=#339933]=[/COLOR] getSupportFragmentManager[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      fragmentManager.[COLOR=#006633]beginTransaction[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]replace[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]content_frame[/COLOR], fragment[COLOR=#009900])[/COLOR].[COLOR=#006633]commit[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

      [COLOR=#666666][I]// update selected item and title, then close the drawer[/I][/COLOR]
      mDrawerList.[COLOR=#006633]setItemChecked[/COLOR][COLOR=#009900]([/COLOR]position, [COLOR=#000066][B]true[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      setTitle[COLOR=#009900]([/COLOR]mPlanetTitles[COLOR=#009900][[/COLOR]position[COLOR=#009900]][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
      mDrawerLayout.[COLOR=#006633]closeDrawer[/COLOR][COLOR=#009900]([/COLOR]mDrawerList[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
   [COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
در فایل drawer_list_item.xml ، ساختار گرافیکی مربوط به item های ListView به کار رفته در Sliding Menu ، تعریف شده است (تنها یک TextView ساده) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<!--[/COLOR]
  Copyright [COLOR=#CC66CC]2013[/COLOR] The Android Open Source Project

  Licensed under the Apache License, Version [COLOR=#CC66CC]2.0[/COLOR] [COLOR=#009900]([/COLOR]the [COLOR=#0000FF]"License"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
  you may not use [B]this[/B] file except in compliance with the License.
  [COLOR=#006633]You[/COLOR] may obtain a copy of the License at

      http[COLOR=#339933]:[/COLOR][COLOR=#666666][I]//www.apache.org/licenses/LICENSE-2.0[/I][/COLOR]

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an [COLOR=#0000FF]"AS IS"[/COLOR] BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  [COLOR=#006633]See[/COLOR] the License [B]for[/B] the specific language governing permissions and
  limitations under the License.
  [COLOR=#339933]-->[/COLOR]

[COLOR=#339933]<[/COLOR]TextView xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@android:id/text1"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
    android[COLOR=#339933]:[/COLOR]textAppearance[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@android:style/TextAppearance.Medium"[/COLOR]
    android[COLOR=#339933]:[/COLOR]gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"center_vertical"[/COLOR]
    android[COLOR=#339933]:[/COLOR]padding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"16dp"[/COLOR]
    android[COLOR=#339933]:[/COLOR]textColor[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"#fff"[/COLOR][COLOR=#339933]/>[/COLOR]
[COLOR=#339933]<!--[/COLOR] 
[COLOR=#339933]<[/COLOR]TextView xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@android:id/text1"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
    android[COLOR=#339933]:[/COLOR]textAppearance[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"?android:attr/textAppearanceListItemSmall"[/COLOR]
    android[COLOR=#339933]:[/COLOR]gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"center_vertical"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingLeft[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"16dp"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingRight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"16dp"[/COLOR]
    android[COLOR=#339933]:[/COLOR]textColor[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"#fff"[/COLOR]
    android[COLOR=#339933]:[/COLOR]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"?android:attr/activatedBackgroundIndicator"[/COLOR]
    android[COLOR=#339933]:[/COLOR]minHeight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"?android:attr/listPreferredItemHeightSmall"[/COLOR][COLOR=#339933]/>[/COLOR] [COLOR=#339933]-->[/COLOR][/FONT]
[/FONT][/COLOR]
فایل activity_main.xml ، فایل گرافیکی متناظر با Activity (یا در واقع همان SherlockFragmentActivity) می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<!--[/COLOR]
  Copyright [COLOR=#CC66CC]2013[/COLOR] The Android Open Source Project

  Licensed under the Apache License, Version [COLOR=#CC66CC]2.0[/COLOR] [COLOR=#009900]([/COLOR]the [COLOR=#0000FF]"License"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
  you may not use [B]this[/B] file except in compliance with the License.
  [COLOR=#006633]You[/COLOR] may obtain a copy of the License at

      http[COLOR=#339933]:[/COLOR][COLOR=#666666][I]//www.apache.org/licenses/LICENSE-2.0[/I][/COLOR]

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an [COLOR=#0000FF]"AS IS"[/COLOR] BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  [COLOR=#006633]See[/COLOR] the License [B]for[/B] the specific language governing permissions and
  limitations under the License.
  [COLOR=#339933]-->[/COLOR]


[COLOR=#339933]<!--[/COLOR] A DrawerLayout is intended to be used as the top[COLOR=#339933]-[/COLOR]level content view using match_parent [B]for[/B] both width and height to consume the full space available. [COLOR=#339933]-->[/COLOR]
[COLOR=#339933]<[/COLOR]android.[COLOR=#006633]support[/COLOR].[COLOR=#006633]v4[/COLOR].[COLOR=#006633]widget[/COLOR].[COLOR=#006633]DrawerLayout[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/drawer_layout"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR][COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<!--[/COLOR] As the main content view, the view below consumes the entire
         space available using match_parent in both dimensions. [COLOR=#339933]-->[/COLOR]
    [COLOR=#339933]<[/COLOR]FrameLayout
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/content_frame"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<!--[/COLOR] android[COLOR=#339933]:[/COLOR]layout_gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"start"[/COLOR] tells DrawerLayout to treat
         [B]this[/B] as a sliding drawer on the left side [B]for[/B] left[COLOR=#339933]-[/COLOR]to[COLOR=#339933]-[/COLOR]right
         languages and on the right side [B]for[/B] right[COLOR=#339933]-[/COLOR]to[COLOR=#339933]-[/COLOR]left languages.
         [COLOR=#006633]The[/COLOR] drawer is given a fixed width in dp and [B]extends[/B] the full height of
         the container. [COLOR=#006633]A[/COLOR] solid background is used [B]for[/B] contrast
         with the content view. [COLOR=#339933]-->[/COLOR]
    [COLOR=#339933]<[/COLOR][COLOR=#003399]ListView[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/left_drawer"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"240dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"start"[/COLOR]
        android[COLOR=#339933]:[/COLOR]choiceMode[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"singleChoice"[/COLOR]
        android[COLOR=#339933]:[/COLOR]divider[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@android:color/transparent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]dividerHeight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"0dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"#111"[/COLOR][COLOR=#339933]/>[/COLOR]
[COLOR=#339933]</[/COLOR]android.[COLOR=#006633]support[/COLOR].[COLOR=#006633]v4[/COLOR].[COLOR=#006633]widget[/COLOR].[COLOR=#006633]DrawerLayout[/COLOR][COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین، لایه گرافیکی متناظر با هر SherlockFragmentActivity دلخواه، باید ساختاری مشابه ساختار زیر داشته باشد (من نیز توضیحاتی را به آن اضافه کرده ام تا بعدا بتوانیم بخش های مربوط به Sliding Menu را تشخیص بدهیم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<!--[/COLOR] Navigation Drawer [COLOR=#009900]([/COLOR]start[COLOR=#009900])[/COLOR] [COLOR=#339933]-->[/COLOR]
[COLOR=#339933]<[/COLOR]android.[COLOR=#006633]support[/COLOR].[COLOR=#006633]v4[/COLOR].[COLOR=#006633]widget[/COLOR].[COLOR=#006633]DrawerLayout[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/drawer_layout"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR][COLOR=#339933]>[/COLOR]
[COLOR=#339933]<!--[/COLOR] Navigation Drawer [COLOR=#009900]([/COLOR]end[COLOR=#009900])[/COLOR] [COLOR=#339933]-->[/COLOR]

  کدهای مربوط به ساختار گرافیکی را در اینجا می نویسید

[COLOR=#339933]<!--[/COLOR] Navigation Drawer [COLOR=#009900]([/COLOR]start[COLOR=#009900])[/COLOR] [COLOR=#339933]-->[/COLOR]
[COLOR=#339933]<[/COLOR][COLOR=#003399]ListView[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/left_drawer"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"240dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"start"[/COLOR]
        android[COLOR=#339933]:[/COLOR]choiceMode[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"singleChoice"[/COLOR]
        android[COLOR=#339933]:[/COLOR]divider[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@android:color/transparent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]dividerHeight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"0dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"#111"[/COLOR][COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]android.[COLOR=#006633]support[/COLOR].[COLOR=#006633]v4[/COLOR].[COLOR=#006633]widget[/COLOR].[COLOR=#006633]DrawerLayout[/COLOR][COLOR=#339933]>[/COLOR]
[COLOR=#339933]<!--[/COLOR] Navigation Drawer [COLOR=#009900]([/COLOR]end[COLOR=#009900])[/COLOR] [COLOR=#339933]-->[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ساخت Sliding Menu با استفاده از کتابخانه ActionBarSherlock ، در برنامه نویسی اندروید

ساخت Sliding Menu با استفاده از کتابخانه ActionBarSherlock ، در برنامه نویسی اندروید

قبلا در مباحثی دیگر، کتابخانه ActionBarSherlock را معرفی کردیم و گفتیم که برای ساخت action bar های سازگار با نسخه های اولیه اندروید به کار می رود و کاربردهای فراوانی مثل ساخت Tab بندی (چندین Fragment) دارد. در این مبحث قصد داریم که یک پروژه را از سایتی دیگر ارائه بدهیم (لینک آن سایت در انتهای مبحث ذکر شده است) که در آن، با استفاده از کتابخانه ActionBarSherlock ، یک Sliding Menu ساخته شده است. Sliding Menu را به احتمال زیاد در برنامه های مختلفی دیده اید که هنگامی که کاربر با انگشت، گوشه سمت چپ صفحه را به سمت داخل می کشد، منویی به داخل صفحه می آید که دارای تعدادی گزینه مختلف است و همچنین کلیک بر روی آیکون برنامه اندروید که در action bar نمایش داده شده است نیز باعث می شود که این منو به داخل صفحه بیاید و کاربر با بردن انگشت خود در جهت مخالف، می تواند منو را از صفحه خارج کند تا دیگر نمایش داده نشود :


android-355.jpg

android-356.jpg

من تنها آیکون پروژه اندروید را تغییر داده ام و فایل های آن و همچنین فایل apk را در ادامه قرار می دهم تا دانلود کنید، اما قبل از دانلود، به نکته مهم زیر توجه کنید :

نکته مهم :

پروژه اندرویدی که در این مبحث قرار داده شده است، شامل یک کتابخانه (library) و یک پروژه اندروید جداگانه می باشد، یعنی شما هنگامی که می خواهید پروژه های درون فولدر کلی را به درون برنامه eclipse وارد (import) کنید، دو پروژه (در واقع، دو package) جداگانه در قسمت Package Explorer برنامه eclipse قرار می گیرد (که یکی به عنوان کتابخانه است). در اینگونه مواقع، چون پروژه اندروید به آن کتابخانه وابسته است (از طریق تعیین مسیر) و همچنین چون مسیر قرارگیری آن کتابخانه (library) در کامپیوتر شما، با مسیر آن در کامپیوتر سازنده اصلی، متفاوت است، بنابراین ممکن است که تعدادی علامت خطا برای پروژه اندروید اصلی نمایش داده شود. با توجه به اینکه بنده قصد دارم در تعدادی مبحث دیگر نیز پروژه هایی شامل یک یا چند کتابخانه را برای دانلود قرار بدهم، یک مبحث برای شرح چگونگی رفع این مشکل در لینک زیر نوشته ام تا در تمامی آن مبحث ها دیگر مجبور نباشم این مورد را شرح بدهم و تنها ذکر کردن لینک زیر برای کاربران، کافی باشد :
تایپک مباحث عمومی در برنامه نویسی اندروید


بنابراین قبل از وارد (import) کردن پروژه اندروید به درون برنامه eclipse ، مبحث موجود در لینک فوق را بخوانید.

این پروژه بر اساس کدهای لینک زیر می باشد :


androidbegin.com/tutorial/implementing-actionbarsherlock-side-menu-navigation-drawer-in-android

لینک دانلود پروژه اندروید و فایل apk :

111111
 

پیوست ها

  • 134.zip
    3 مگایابت · بازدیدها: 0
  • 135.rar
    511.4 کیلوبایت · بازدیدها: 0
بالا