ساخت لیست (فهرست) با ListView ، در برنامه نویسی اندروید

P O U R I A

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

  1. ساخت لیست (فهرست)، با استفاده از ListView ، در برنامه نویسی اندروید
  2. ساخت یک ListView سفارشی (Custom ListView) شامل چندین عنصر در هر ردیف (row) از ListView و با قابلیت رفتن به Activity جدید پس از اشاره کاربر بر روی هر ردیف و ارسال اطلاعات بر اساس ردیف انتخاب شده به Activity مقصد، در برنامه نویسی اندروید
  3. تغییر رنگ خط بین item ها (divider) در ListView ، در برنامه نویسی اندروید
  4. تغییر ارتفاع (ضخامت) خط بین item ها (divider) در ListView ، در برنامه نویسی اندروید
  5. حذف خط بین item ها در ListView (یعنی divider)، در برنامه نویسی اندروید
  6. تغییر رنگ پس زمینه (Background) هر item از ListView ، با روش setBackgroundColor ، در برنامه نویسی اندروید
  7. تغییر رنگ پس زمینه item های یک ListView به صورت ترتیبی از چند رنگ (مثلا تکرار 4 رنگ)، در برنامه نویسی اندروید
  8. تغییر ظاهر item های ListView ، در حالت های مختلف اشاره بر روی آنها (حالت های focused و focused and pressed و pressed و default)، در برنامه نویسی اندروید
  9. قرار گرفتن یک لایه نیمه شفاف (رنگی به صورت نیمه شفاف) بر روی item انتخاب شده از ListView ، با مشخصه listSelector ، در برنامه نویسی اندروید
  10. دلیل به هم ریختگی ظاهر item های ListView هنگامی که کدها را بر اساس متغیر position در روش getView نمی نویسیم (مستقل بودن کدها از شماره item ها ، در روش getView که در Adapter مربوط به ListView نوشته می شود)
  11. رفع مشکل جابجا شدن اطلاعات نمایش داده شده در WebView های موجود در item های ListView ، هنگام اسکرول صفحه، در برنامه نویسی اندروید
  12. ساخت ListView بی نهایت (لیست بی پایان - Endless ListView)، در برنامه نویسی اندروید


منبع: kelidestan.com
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ساخت لیست (فهرست)، با استفاده از ListView ، در برنامه نویسی اندروید

ساخت لیست (فهرست)، با استفاده از ListView ، در برنامه نویسی اندروید

در این آموزش قصد داریم که چگونگی ساخت یک لیست (فهرست) ، با استفاده از ListView در برنامه نویسی اندروید را شرح بدهیم. برای این منظور، یک پروژه می سازیم که اولین صفحه آن (activity اصلی)، به صورت یک لیست باشد.
در برنامه eclipse ، ابتدا یک پروژه اندروید با نام www.www.iran-eng.ir بسازید (نام package را برابر com.iran-eng.example انتخاب کنید. نام activity اصلی را برابر MainActivity انتخاب کنید و فایل xml متناظر آن را هم، activity_main انتخاب کنید).
قرار است که 5 نام ماشین را درون لیست خود داشته باشیم و باید این نام ها را در یک فایل ذخیره کنیم. بنابراین، یک فایل xml با نام cars.xml می سازیم و در آن، نام های مورد نظرمان برای لیست را ذخیره ممی کنیم. این فایل را درون فولدر values می سازیم :

android-128.jpg

کدهای فایل cars.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[COLOR=#339933]-[/COLOR]array name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"names"[/COLOR][COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]item name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"name_1"[/COLOR][COLOR=#339933]>[/COLOR]پراید[COLOR=#339933]</[/COLOR]item[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]item name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"name_2"[/COLOR][COLOR=#339933]>[/COLOR]پژو [COLOR=#CC66CC]405[/COLOR][COLOR=#339933]</[/COLOR]item[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]item name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"name_3"[/COLOR][COLOR=#339933]>[/COLOR]پژو [COLOR=#CC66CC]206[/COLOR][COLOR=#339933]</[/COLOR]item[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]item name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"name_4"[/COLOR][COLOR=#339933]>[/COLOR]پژو پارس[COLOR=#339933]</[/COLOR]item[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]item name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"name_5"[/COLOR][COLOR=#339933]>[/COLOR]سمند[COLOR=#339933]</[/COLOR]item[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]string[COLOR=#339933]-[/COLOR]array[COLOR=#339933]>[/COLOR] 
[COLOR=#339933]</[/COLOR]resources[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
اکنون باید فایل activity_main.xml را تغییر بدهیم. تمامی عناصر درون آن را حذف می کنیم و سپس، از منوی Composite ، گزینه ListView را انتخاب کرده و به درون صفحه گرافیکی فایل می کشیم. سپس اندازه ListView را بزرگ می کنیم تا کل صفحه گرافیکی را پر کند.

پس از این تغییرات، کدهای فایل 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]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]ListView[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/listView1"[/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]ListView[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
به این بخش از کدها توجه کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/listView1"[/COLOR][/FONT]
[/FONT][/COLOR]
باید آن را به صورت زیر تغییر دهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@android:id/list"[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین درنهایت، کدهای فایل 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]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]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]"match_parent"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
         [COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]ListView[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
فایل MainActivity.java را باز می کنیم، کدهای آن به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.iran-eng.example[/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.[/COLOR][COLOR=#006699]iran-eng[/COLOR][COLOR=#006699].example[/COLOR][COLOR=#339933];[/COLOR]

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

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] ListActivity [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]
                
        setListAdapter[COLOR=#009900]([/COLOR][B]new[/B] ArrayAdapter[COLOR=#339933]<[/COLOR]String[COLOR=#339933]>[/COLOR][COLOR=#009900]([/COLOR][B]this[/B], 
            android.[COLOR=#006633]R[/COLOR].[COLOR=#006633]layout[/COLOR].[COLOR=#006633]simple_list_item_1[/COLOR], 
            getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getStringArray[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]array[/COLOR].[COLOR=#006633]cars[/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]
مهمترین تغییر، تغییر کلاس Activity به ListActivity می باشد (تقریبا در ابتدای کدها). همچنین package مربوط به آن را import کرده ایم.

با اجرای برنامه اندروید ساخته شده، لیست به صورت زیر نمایش داده خواهد شد :

android-129.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ساخت یک ListView سفارشی (Custom ListView) شامل چندین عنصر در هر ردیف (row) از ListView

ساخت یک ListView سفارشی (Custom ListView) شامل چندین عنصر در هر ردیف (row) از ListView

ساخت یک ListView سفارشی (Custom ListView) شامل چندین عنصر در هر ردیف (row) از ListView
و با قابلیت رفتن به Activity جدید پس از اشاره کاربر بر روی هر ردیف
و ارسال اطلاعات بر اساس ردیف انتخاب شده به Activity مقصد،
در برنامه نویسی اندروید

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

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

ساختار برنامه اندروید به این صورت است که ListView با تعداد 20 ردیف (row - item) داریم که در هر ردیف آن، 4 عنصر وجود دارد (2 تا TextView و 2 تا ImageView). یکی از ImageView ها دارای عکس ثابت و تکراری در تمامی item ها است ولی یک ImageView دیگر، عکسی متفاوت در هر item خواهد داشت. همچنین، یک TextView دارای متنی ثابت در همه item ها است، ولی یک TextView دیگر، در هر item ، متنی متفاوت را خواهد داشت. در واقع با این انتخاب خواسته ایم نمایش بدهیم که چگونه می توانیم عناصری با منبع یکسان و همچنین، عناصری با منبع غیر یکسان، در item های ListView داشته باشیم.

android-339.jpg


پس از اشاره بر روی یک item دلخواه از ListView ، وارد یک Activity دیگر می شویم که در آن Activity ، پیامی نمایش داده می شود که شماره item انتخاب شده در ListView را اعلام کرده است (زیرا این شماره را به آن Activity ارسال می کنیم) :

android-340.jpg

این پروژه اندروید، نیاز به تعدادی عکس دارد، یکی به عنوان عکس پس زمینه Activity مربوط به نمایش Listview ، یکی برای نمایش در آن ImageView که عکس آن در تمامی ردیف های ListView ثابت است و 20 تای دیگر هم برای نمایش در ImageView با عکس متغیر در 20 ردیف (row - item) مربوط به ListView . تمامی این عکس ها را در پوشه drawable-hdpi از پروزه اندروید، کپی کرده ایم :

697.jpg

همچنین به تعدادی رشته (متن - string) نیز برای پروژه اندروید نیاز داریم (مثلا برای متنی که باید در هر ردیف از Listview نمایش داده شود) که آنها را در فایل strings.xml از پروژه اندروید تعریف کرده ایم :

698.jpg

بنابراین کدهای فایل 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]CustomListView[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_second"[/COLOR][COLOR=#339933]>[/COLOR]SecondActivity[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"kelidestan"[/COLOR][COLOR=#339933]>[/COLOR]کلیدستان[COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_1"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]1[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_2"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]2[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_3"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]3[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_4"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]4[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_5"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]5[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_6"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]6[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_7"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]7[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_8"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]8[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_9"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]9[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_10"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]10[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_11"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]11[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_12"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]12[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_13"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]13[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_14"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]14[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_15"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]15[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_16"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]16[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_17"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]17[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_18"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]18[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_19"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]19[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]<[/COLOR]string name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"string_key_20"[/COLOR][COLOR=#339933]>[/COLOR]کلید شماره [COLOR=#CC66CC]20[/COLOR][COLOR=#339933]</[/COLOR]string[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]resources[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
ساختار پروژه اندروید به صورت زیر می باشد (Activity ها و فایل های xml را نمایش داده ایم) :

688.jpg

نام پروژه اندروید را برابر CustomListView انتخاب کرده ایم، همچنین نام package برنامه اندروید را برابر com.kelidetan.customlistview در نظر گرفته ایم. نام Activity اصلی برنامه اندروید، MainActivity.java می باشد و یک Activity هم با نام SecondActivity.java داریم. ListView در MainActivity نمایش داده می شود و اگر کاربر بر روی یکی از ردیف های (row - item) ListView اشاره کند، آنگاه وارد SecondActivity می شود.

فایل activity_main.xml ، لایه گرافیکی متناظر برای MainActivity را تعیین می کند و فایل activity_second.xml هم مربوط به لایه گرافیکی متناظر برای SecondActivity است. در فایل list_item.xml ، لایه گرافیکی متناظر برای هر ردیف ListView تعریف شده است. یعنی در این فایل، ساختار کلی هر ردیف (row - item) از ListView را توصیف می کنیم تا برنامه اندروید بداند که عناصر هر ردیف، چگونه باید چیده شوند.

بنابراین نکته مهم در ListView این است که ما ساختار کلی هر ردیف (row - item) از ListView را در یک فایل xml تعریف می کنیم. مثلا در این ListView ، چون 4 عنصر داریم، بنابراین یک فایل xml با نام list_item.xml ساخته ایم که در آن شیوه قرارگیری این 4 عنصر تعریف شده است. این فایل در پوشه layout از پروژه اندروید قرار می گیرد. بنابراین اگر بخواهیم موقعیت عناصر در هر ردیف از ListView را تغییر بدهیم، تنها کافی است که این فایل را ویرایش کنیم :

689.jpg
 
آخرین ویرایش:

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
کدهای فایل list_item.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]padding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"10dp"[/COLOR]
    android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"vertical"[/COLOR] [COLOR=#339933]>[/COLOR]
    
    [COLOR=#339933]<[/COLOR]LinearLayout 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]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]"80dp"[/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]"5dp"[/COLOR]
            android[COLOR=#339933]:[/COLOR]textSize[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"15sp"[/COLOR]
            android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"Text_1"[/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]"80dp"[/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]"5dp"[/COLOR]
            android[COLOR=#339933]:[/COLOR]textSize[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"15sp"[/COLOR]
            android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/kelidestan"[/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]"60dp"[/COLOR]
            android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"60dp"[/COLOR]
            android[COLOR=#339933]:[/COLOR]padding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"5dp"[/COLOR]
            android[COLOR=#339933]:[/COLOR]layout_gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"right"[/COLOR]
            android[COLOR=#339933]:[/COLOR]src[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/kelidestan"[/COLOR] [COLOR=#339933]/>[/COLOR]

        [COLOR=#339933]<[/COLOR]ImageView
            android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/imageView2"[/COLOR]
            android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"60dp"[/COLOR]
            android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"60dp"[/COLOR]
            android[COLOR=#339933]:[/COLOR]padding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"5dp"[/COLOR]
            android[COLOR=#339933]:[/COLOR]layout_gravity[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"right"[/COLOR]
            android[COLOR=#339933]:[/COLOR]src[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/kelidestan"[/COLOR] [COLOR=#339933]/>[/COLOR]
    
    [COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، برای هر ردیف (row - item) از ListView ، دو TextView برای نمایش متن و دو ImageView برای نمایش عکس تعریف کرده ایم. اگر یادتان باشد، گفتیم که یکی از متن ها ثابت و دیگری متغیر خواهد بود و همچنین یکی از عکس ها ثابت و دیگری متغیر خواهد بود. اگر به کدها نگاه کنید، مشاهده خواهید کرد که برای هر 4 عنصر، منابعی (متن یا عکس) را تعیین کرده ایم. بنابراین همان دو موردی که قصد داشتیم ثابت باشند را در همینجا مشخص کرده ایم که چه چیزی در آنها نمایش داده شود و دیگر نیازی به تغییر دادن آنها با کدهای java در Activity نخواهد بود. اما دو تای دیگر که قرار است در هر ردیف دارای مقدار (متن یا عکس) متفاوتی باشند را بعدا در خود کدهای java در Activity تغییر خواهیم داد. شاید این سوال برای شما پیش بیاید که خوب چرا دو موردی که قرار است متغیر باشند را مقدار دهی (متن یا عکس) کرده ایم، بلکه هیچ منبعی برای آن تعیین نمی کردیم تا بعدا منبع آنها را توسط کدهای java تعیین کنیم، پاسخ این است که چون ما معمولا نگاهی هم به ظاهر گرافیکی فایل xml می اندازیم، بنابراین یک مقدار (متن یا عکس) برای آنها تعیین می کنیم تا نحوه چیدمان آنها در کل صفحه را ببینم، بعدا چون با اجرای کدهای java ، منبع این عناصر تغییر داده می شود، بنابراین کاربر هیچ وقت این منابع (متن یا عکس) پیش فرض را که در فایل xml تعریف کرده ایم، نخواهد دید.

ظاهر گرافیکی فایل list_item.xml به صورت زیر خواهد بود :

690.jpg

اکنون به سراغ فایل activity_main.xml که فایل xml متناظر برای Activity اصلی برنامه (با نام MainActivity.java) است می رویم که قرار است ListView در آن نمایش داده شود :

691.jpg

کدهای فایل activity_main.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/background"[/COLOR]
    android[COLOR=#339933]:[/COLOR]orientation[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"vertical"[/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]
مشاهده می کنید که یک عنصر ListView برای آن تعریف کرده ایم و همچنین یک عکس با نام background از پوشه های drawable را به عنوان پس زمینه Activity در نظر گرفته ایم. ظاهر گرافیکی فایل activity_main.xml به صورت زیر می باشد :

692.jpg

اکنون فایل activity_second.xml را بررسی می کنیم :

693 (1).jpg
 
آخرین ویرایش:

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فایل activity_second.xml ، فایل xml متناظر برای Acticity با نام SecondActivity.java می باشد. در Activity مورد نظر قرار است که در یک TextView ، به کاربر نمایش بدهیم که شماره item ای از ListView که بر روی آن اشاره کرده است، چند بوده (یعنی شماره item (ردیف) از Activity اصلی برنامه اندروید به این Activity ارسال می شود و در این Activity به کاربر نمایش داده خواهد شد). بنابراین در فایل activity_second.xml ، تنها باید یک TextView داشته باشیم. پس کدهای فایل activity_second.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]".SecondActivity"[/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]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/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]RelativeLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
ظاهر گرافیکی فایل activity_second.xml به صورت زیر می باشد :

694.jpg

اکنون باید به سراغ Activity ها برویم و کدهای java مربوط به آنها را بنویسیم. همان طور که گفتیم، Activity اصلی برنامه اندروید دارای نام MainActivity.java می باشد :

695.jpg

کدهای فایل MainActivity.java را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.iran-eng.customlistview[/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.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.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] [COLOR=#003399]String[/COLOR] number_of_keys[COLOR=#339933];[/COLOR]
        [B]public[/B] [COLOR=#003399]String[/COLOR][COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] my_items [COLOR=#339933]=[/COLOR] [COLOR=#009900]{[/COLOR][COLOR=#0000FF]"key_1"[/COLOR],
                                      [COLOR=#0000FF]"key_2"[/COLOR],
                                      [COLOR=#0000FF]"key_3"[/COLOR],
                                      [COLOR=#0000FF]"key_4"[/COLOR],
                                      [COLOR=#0000FF]"key_5"[/COLOR],
                                      [COLOR=#0000FF]"key_6"[/COLOR],
                                      [COLOR=#0000FF]"key_7"[/COLOR],
                                      [COLOR=#0000FF]"key_8"[/COLOR],
                                      [COLOR=#0000FF]"key_9"[/COLOR],
                                      [COLOR=#0000FF]"key_10"[/COLOR],
                                      [COLOR=#0000FF]"key_11"[/COLOR],
                                      [COLOR=#0000FF]"key_12"[/COLOR],
                                      [COLOR=#0000FF]"key_13"[/COLOR],
                                      [COLOR=#0000FF]"key_14"[/COLOR],
                                      [COLOR=#0000FF]"key_15"[/COLOR],
                                      [COLOR=#0000FF]"key_16"[/COLOR],
                                      [COLOR=#0000FF]"key_17"[/COLOR],
                                      [COLOR=#0000FF]"key_18"[/COLOR],
                                      [COLOR=#0000FF]"key_19"[/COLOR],
                                      [COLOR=#0000FF]"key_20"[/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]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/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],
                                       my_items[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], SecondActivity.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        number_of_keys [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]"key_number"[/COLOR], number_of_keys[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[/COLOR], parent, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        
                        [COLOR=#003399]String[/COLOR] stringName [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"string_key_"[/COLOR] [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] 
                        [COLOR=#000066][B]int[/B][/COLOR] string_res_ID [COLOR=#339933]=[/COLOR]getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]stringName,[COLOR=#0000FF]"string"[/COLOR],getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#003399]String[/COLOR] my_string [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]string_res_ID[COLOR=#009900])[/COLOR][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]my_string[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        
                        [COLOR=#003399]String[/COLOR] imageName [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"key_"[/COLOR] [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] 
                        [COLOR=#000066][B]int[/B][/COLOR] image_res_ID [COLOR=#339933]=[/COLOR]getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]imageName,[COLOR=#0000FF]"drawable"[/COLOR],getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        ImageView iv [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]ImageView[COLOR=#009900])[/COLOR] row.[COLOR=#006633]findViewById[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]imageView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        iv.[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]image_res_ID[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
                        [B]return[/B] row[COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
                
                
        [COLOR=#009900]}[/COLOR]
        

[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
حال بخش های مختلف کدها را بررسی می کنیم :

کدهای زیر را ببینید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]        [B]public[/B] [COLOR=#003399]ListView[/COLOR] lv[COLOR=#339933];[/COLOR]
        [B]public[/B] [COLOR=#003399]String[/COLOR] number_of_keys[COLOR=#339933];[/COLOR]
        [B]public[/B] [COLOR=#003399]String[/COLOR][COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] my_items [COLOR=#339933]=[/COLOR] [COLOR=#009900]{[/COLOR][COLOR=#0000FF]"key_1"[/COLOR],
                                      [COLOR=#0000FF]"key_2"[/COLOR],
                                      [COLOR=#0000FF]"key_3"[/COLOR],
                                      [COLOR=#0000FF]"key_4"[/COLOR],
                                      [COLOR=#0000FF]"key_5"[/COLOR],
                                      [COLOR=#0000FF]"key_6"[/COLOR],
                                      [COLOR=#0000FF]"key_7"[/COLOR],
                                      [COLOR=#0000FF]"key_8"[/COLOR],
                                      [COLOR=#0000FF]"key_9"[/COLOR],
                                      [COLOR=#0000FF]"key_10"[/COLOR],
                                      [COLOR=#0000FF]"key_11"[/COLOR],
                                      [COLOR=#0000FF]"key_12"[/COLOR],
                                      [COLOR=#0000FF]"key_13"[/COLOR],
                                      [COLOR=#0000FF]"key_14"[/COLOR],
                                      [COLOR=#0000FF]"key_15"[/COLOR],
                                      [COLOR=#0000FF]"key_16"[/COLOR],
                                      [COLOR=#0000FF]"key_17"[/COLOR],
                                      [COLOR=#0000FF]"key_18"[/COLOR],
                                      [COLOR=#0000FF]"key_19"[/COLOR],
                                      [COLOR=#0000FF]"key_20"[/COLOR]
                                             [COLOR=#009900]}[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کدهای بالا، یک ListView با نام lv تعریف کرده ایم و همچنین یک متغیر از نوع رشته (String) نیز با نام number_of_keys تعریف کرده ایم که شماره ردیفی (row - item) از ListView که بر روی آن اشاره شده، در آن ذخیره می شود. یک لیست آرایه ای (ArrayList) از نوع رشته (String) نیز با نام my_items تعریف کرده ایم که تعداد کل ردیف های ListView و همچنین متنی را برای هر یک از آنها تعریف می کند. اینکه این متن در ساختار خود ردیف ها (row - item) به کار برود یا نه، بستگی به خود شما دارد، ولی در کل با این لیست آرایه ای (ArrayList)، تعداد کل ردیف ها و همچنین متن متناظر با آنها را تعریف کرده ایم که در ادامه کدها، مورد استفاده قرار می گیرد.

بخشی از کدها در روش OnCreate نوشته شده اند و همان طور که می دانید، کدهایی که در روش OnCreate نوشته می شوند، به محض ورود به Activity ، اجرا خواهند شد. به چند خط زیر از کدها توجه کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]                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],
                                       my_items[COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]      
                
                lv [COLOR=#339933]=[/COLOR] getListView[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
با روش setListAdapter ، یک Adapter را برای ListView تعیین کرده ایم که ردیف های (row - item) مربوط به ListView و ساختار آن را شکل می دهد (می سازد). تعیین Adapter بر اساس ساخت یک شیء (object) جدید از کلاس (class) با نام MyAdapter بوده است، این موضوع را از دو کلمه زیر می توانید متوجه شوید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]new[/B] MyAdapter[/FONT]
[/FONT][/COLOR]
زیرا کلمه new برای ساخت یک شیء (object) از یک کلاس (class) به کار می رود. اگر به انتهای کدهای Activity توجه کنید، متوجه می شوید که کلاس MyAdapter را در انتهای کدهای Activity تعریف کرده ایم. کدهای کلاس MyAdapter را در آخر شرح خواهیم داد.

خط زیر از کدها را ببینید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]android.[COLOR=#006633]R[/COLOR].[COLOR=#006633]layout[/COLOR].[COLOR=#006633]simple_list_item_1[/COLOR][/FONT]
[/FONT][/COLOR]
این عبارت، اشاره به یک فایل xml دارد که در android.R.layout وجود دارد و به عنوان یک فایل xml استاندارد، برای ساخت برخی از Listview ها (ردیف های آن) به کار می رود. در صورت جستجو در اینترنت، می توانید کدهای آن را مشاهده کنید ولی نیازی به این کار نیست و اگر فقط آن را به کار ببرید کافی است، زیرا ساختاری کاملا ساده دارد و مشکلی برای طراحی شما به وجود نمی آورد (در صورت دلخواه، می توان یک فایل xml خودتان بسازید و به آن ارجاع بدهید، ولی در کل، نیازی به این کار نیست).

عبارت R.id.textView1 اشاره به id یکی از Textview های تعریف شده در فایل list_item.xml دارد (همان فایلی که در آن، ساختار هر ردیف از Listview را تعیین کردیم). همچنین لیست آرایه ای my_items را هم ذکر کرده ایم که تعداد کل ردیف های Listview و همچنین متن متناظر با آنها را تعیین می کند.

اکنون چند خط زیر از کدها را در نظر بگیرید :
کد:
[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], SecondActivity.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        number_of_keys [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]"key_number"[/COLOR], number_of_keys[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]
در کدهای فوق، با روش setOnItemClickListener تعیین کرده ایم که در صورت اشاره کاربر بر روی یکی از item های (ردیف های) ListView ، چه کدهایی اجرا شوند. بنابراین اگر کاربر بر روی یک ردیف (row - item) اشاره کند، کدهای زیر اجرا خواهد شد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Intent i [COLOR=#339933]=[/COLOR] [B]new[/B] Intent[COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], SecondActivity.[B]class[/B][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
number_of_keys [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]"key_number"[/COLOR], number_of_keys[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
startActivity[COLOR=#009900]([/COLOR]i[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کدهای فوق، با استفاده از Intent ، کاربر را به Activity با نام SecondActivity منتقل می کنیم و همچنین با استفاده از روش putExtra ، یک مقدار را هم به SecondActivity ارسال می کنیم. مقداری که به SecondActivity ارسال می شود، همان شماره ردیفی (row - item) است که کاربر بر روی آن اشاره کرده و آن را بر اساس متغیر position به دست آورده ایم، زیرا متغیر position ، شماره ای متناسب با ردیف (row - item) اشاره شده بر روی آن را در خود ذخیره کرده است.

اکنون کدهای مربوط به کلاس MyAdapter را شرح می دهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]        [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[/COLOR], parent, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        
                        [COLOR=#003399]String[/COLOR] stringName [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"string_key_"[/COLOR] [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] 
                        [COLOR=#000066][B]int[/B][/COLOR] string_res_ID [COLOR=#339933]=[/COLOR]getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]stringName,[COLOR=#0000FF]"string"[/COLOR],getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        [COLOR=#003399]String[/COLOR] my_string [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]string_res_ID[COLOR=#009900])[/COLOR][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]my_string[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        
                        [COLOR=#003399]String[/COLOR] imageName [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"key_"[/COLOR] [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] 
                        [COLOR=#000066][B]int[/B][/COLOR] image_res_ID [COLOR=#339933]=[/COLOR]getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]imageName,[COLOR=#0000FF]"drawable"[/COLOR],getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        ImageView iv [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]ImageView[COLOR=#009900])[/COLOR] row.[COLOR=#006633]findViewById[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]imageView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                        iv.[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]image_res_ID[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        
                        [B]return[/B] row[COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
                
                
        [COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که قبلا گفتیم، در این کدها، باید تغییرات مورد نظرمان برای ردیف های (row - item) مربوط به ListView را بنویسیم. یک TextView دارای متن ثابت است و یک ImageView هم دارای عکس ثابت می باشد و مقادیر (متن یا عکس) مربوط به آن دو را هم قبلا در کدهای xml ، تعیین کردیم. اکنون می ماند TextView با متن متغیر و همچنین ImageView با عکس متغیر.

برای TextView با متن متغیر، کدهای زیر نوشته شده است :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]String[/COLOR] stringName [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"string_key_"[/COLOR] [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] 
[COLOR=#000066][B]int[/B][/COLOR] string_res_ID [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]stringName,[COLOR=#0000FF]"string"[/COLOR],getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]String[/COLOR] my_string [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]string_res_ID[COLOR=#009900])[/COLOR][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]my_string[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
شماره ذخیره شده در متغیر position ، متناسب با شماره ردیفی (row - item) از Listview است که بر روی آن اشاره شده است، بنابراین بر اساس مقدار ذخیره شده در متغیر position ، یک رشته تعریف شده در فایل strings.xml را فراخوانی کرده و در TextView با id برابر R.id.textView1 ، نمایش می دهیم.

نکته مهم :

یک نکته مهم را باید ذکر کنم و آن این است که برای شناسایی TextView ، عبارت زیر را نوشته ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]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][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، به جای findViewById که همیشه به کار می بردیم، این بار عبارت row.findViewById را نوشته ایم. اگر کلمه row حذف شود، با خطا روبرو خواهیم شد (برای شناسایی سایر عناصر تعریف شده در ردیف Listview نیز باید به همین صورت عمل کنیم).

برای ImagView با عکس متغیر، کدهای زیر نوشته شده است :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]String[/COLOR] imageName [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"key_"[/COLOR] [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] 
[COLOR=#000066][B]int[/B][/COLOR] image_res_ID [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]imageName,[COLOR=#0000FF]"drawable"[/COLOR],getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
ImageView iv [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]ImageView[COLOR=#009900])[/COLOR] row.[COLOR=#006633]findViewById[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]imageView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
iv.[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]image_res_ID[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
چون نام همه عکس ها با عبارت _key شروع می شود، بنابراین تنها شماره متناظر با ردیف اشاره شده را بر اساس مقدار ذخیره شده در position به دست می آوریم و به انتهای عبارت _key اضاف کرده و بر اساس نام به دست آمده، عکس مورد نظر را از پوشه های drawable فراخوانی کرده و در ImageView نمایش می دهیم.

اکنون باید کدهای فایل SecondActivity.java را شرح بدهیم که همان Activity است که پس از اشاره کاربر بر روی یک ردیف از ListView ، به آن منتقل می شود و شماره مربوط به ردیفی (row - item) که کاربر بر روی آن اشاره کرده، در آن Activity نمایش داده خواهد شد :

696.jpg

کدهای فایل SecondActivity.java را به صورت زیر می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.iran-eng.customlistview[/COLOR][COLOR=#339933];[/COLOR]

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

[B]public[/B] [B]class[/B] SecondActivity [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_second[/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]
                     [COLOR=#003399]String[/COLOR] my_key_number [COLOR=#339933]=[/COLOR] extras.[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_number"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                     [COLOR=#003399]String[/COLOR] my_message [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"you pressed the item number "[/COLOR] [COLOR=#339933]+[/COLOR] my_key_number [COLOR=#339933]+[/COLOR] [COLOR=#0000FF]" in ListView"[/COLOR][COLOR=#339933];[/COLOR]
                     TextView tv [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]
                     tv.[COLOR=#006633]setText[/COLOR][COLOR=#009900]([/COLOR]my_message[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
        [COLOR=#009900]}[/COLOR]


[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
در روش onCreate ، کدهای زیر را نوشته ایم :
کد:
[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]
                     [COLOR=#003399]String[/COLOR] my_key_number [COLOR=#339933]=[/COLOR] extras.[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"key_number"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                     [COLOR=#003399]String[/COLOR] my_message [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"you pressed the item number "[/COLOR] [COLOR=#339933]+[/COLOR] my_key_number [COLOR=#339933]+[/COLOR] [COLOR=#0000FF]" in ListView"[/COLOR][COLOR=#339933];[/COLOR]
                     TextView tv [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]
                     tv.[COLOR=#006633]setText[/COLOR][COLOR=#009900]([/COLOR]my_message[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
با کدهای فوق تعیین کرده ایم که اگر یک مقدار با نام key_number به این Activity ارسال شد، آن مقدار را دریافت کرده و بر اساس آن، پیامی را در یک TextView نمایش بدهد.

ساخت پروژه اندروید، پایان یافت. نتیجه به صورت زیر می باشد :

699.jpg


پس از اشاره بر روی یک item دلخواه از ListView ، وارد یک Activity دیگر می شویم که در آن Activity ، پیامی نمایش داده می شود که شماره item انتخاب شده در ListView را اعلام کرده است :

700.jpg

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

پیوست ها

  • 126.zip
    1.1 مگایابت · بازدیدها: 0
  • 127.rar
    320.1 کیلوبایت · بازدیدها: 0
آخرین ویرایش:

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تغییر رنگ خط بین item ها (divider) در ListView ، در برنامه نویسی اندروید

تغییر رنگ خط بین item ها (divider) در ListView ، در برنامه نویسی اندروید

برای تغییر رنگ خط بین item ها (divider) در یک ListView ، باید در فایل xml و درون کدهای مربوط به تعریف ListView ، کد زیر را اضافه کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]android[COLOR=#339933]:[/COLOR]divider[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"#0000FF"[/COLOR][/FONT]
[/FONT][/COLOR]
[h=2]جدول رنگ ها :[/h]کد مربوط به رنگ دلخواه خود را می توانید در جدول زیر بیابید :


#000000#000033#000066#000099#0000CC#0000FF
#003300#003333#003366#003399#0033CC#0033FF
#006600#006633#006666#006699#0066CC#0066FF
#009900#009933#009966#009999#0099CC#0099FF
#00CC00#00CC33#00CC66#00CC99#00CCCC#00CCFF
#00FF00#00FF33#00FF66#00FF99#00FFCC#00FFFF
#330000#330033#330066#330099#3300CC#3300FF
#333300#333333#333366#333399#3333CC#3333FF
#336600#336633#336666#336699#3366CC#3366FF
#339900#339933#339966#339999#3399CC#3399FF
#33CC00#33CC33#33CC66#33CC99#33CCCC#33CCFF
#33FF00#33FF33#33FF66#33FF99#33FFCC#33FFFF
#660000#660033#660066#660099#6600CC#6600FF
#663300#663333#663366#663399#6633CC#6633FF
#666600#666633#666666#666699#6666CC#6666FF
#669900#669933#669966#669999#6699CC#6699FF
#66CC00#66CC33#66CC66#66CC99#66CCCC#66CCFF
#66FF00#66FF33#66FF66#66FF99#66FFCC#66FFFF
#990000#990033#990066#990099#9900CC#9900FF
#993300#993333#993366#993399#9933CC#9933FF
#996600#996633#996666#996699#9966CC#9966FF
#999900#999933#999966#999999#9999CC#9999FF
#99CC00#99CC33#99CC66#99CC99#99CCCC#99CCFF
#99FF00#99FF33#99FF66#99FF99#99FFCC#99FFFF
#CC0000#CC0033#CC0066#CC0099#CC00CC#CC00FF
#CC3300#CC3333#CC3366#CC3399#CC33CC#CC33FF
#CC6600#CC6633#CC6666#CC6699#CC66CC#CC66FF
#CC9900#CC9933#CC9966#CC9999#CC99CC#CC99FF
#CCCC00#CCCC33#CCCC66#CCCC99#CCCCCC#CCCCFF
#CCFF00#CCFF33#CCFF66#CCFF99#CCFFCC#CCFFFF
#FF0000#FF0033#FF0066#FF0099#FF00CC#FF00FF
#FF3300#FF3333#FF3366#FF3399#FF33CC#FF33FF
#FF6600#FF6633#FF6666#FF6699#FF66CC#FF66FF
#FF9900#FF9933#FF9966#FF9999#FF99CC#FF99FF
#FFCC00#FFCC33#FFCC66#FFCC99#FFCCCC#FFCCFF
#FFFF00#FFFF33#FFFF66#FFFF99#FFFFCC#FFFFFF
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تغییر ارتفاع (ضخامت) خط بین item ها (divider) در ListView ، در برنامه نویسی اندروید

تغییر ارتفاع (ضخامت) خط بین item ها (divider) در ListView ، در برنامه نویسی اندروید

برای تغییر ارتفاع (ضخامت) خط بین item ها (divider) در یک ListView ، باید در فایل xml و درون کدهای مربوط به تعریف ListView ، کد زیر را اضافه کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]android[COLOR=#339933]:[/COLOR]dividerHeight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"3dp"[/COLOR][/FONT]
[/FONT][/COLOR]
مقدار مورد نظرتان برای ارتفاع خط را باید بر حسب dp در کد بالا بنویسید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
حذف خط بین item ها در ListView (یعنی divider)، در برنامه نویسی اندروید

حذف خط بین item ها در ListView (یعنی divider)، در برنامه نویسی اندروید

چنانچه بخواهیم در یک ListView ، خطی که بین item ها نمایش داده می شود (یعنی divider) را حذف کنیم، باید در فایل xml ، در میان کدهای تعریف ListView ، کدهای زیر را بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]android[COLOR=#339933]:[/COLOR]divider[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@null"[/COLOR]
android[COLOR=#339933]:[/COLOR]dividerHeight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"0dp"[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تغییر رنگ پس زمینه (Background) هر item از ListView ، با روش setBackgroundColor ، در برنامه نویسی اندروید

تغییر رنگ پس زمینه (Background) هر item از ListView ، با روش setBackgroundColor ، در برنامه نویسی اندروید

فرض کنید که قصد داریم رنگ پس زمینه (Background) هر item از ListView را تغییر بدهیم (البته این کار را با ویرایش فایل xml مربوط به ساختار گرافیکی هر item از ListView نیز می توان انجام داد، ولی ما قصد داریم که با کدهای java این کار را انجام بدهیم، زیرا شاید مثلا بخواهیم که رنگ پس زمینه هر item از ListView با سایر item ها متفاوت باشد). برای این منظور، باید به سراغ کدهای adapter به کار رفته برای ساخت item های ListView برویم. مثلا فرض کنید که adapter زیر را برای یک ListView به کار برده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][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[/COLOR], parent, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#666666][I]// some codes[/I][/COLOR]

                [B]return[/B] row[COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
به خط زیر از کدها توجه کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][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[/COLOR], parent, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
ما View مربوط به هر item (هر ردیف - هر row) از ListView را در متغیری به نام row داریم، بنابراین برای تغییر رنگ پس زمینه آن، تنها کافی است که کد زیر را بعد از آن بنویسیم (رنگ قرمز را انتخاب کرده ایم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]row.[COLOR=#006633]setBackgroundColor[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Color[/COLOR].[COLOR=#006633]RED[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین کدها به صورت زیر خواهند بود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][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[/COLOR], parent, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                row.[COLOR=#006633]setBackgroundColor[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Color[/COLOR].[COLOR=#006633]RED[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#666666][I]// some codes[/I][/COLOR]

                [B]return[/B] row[COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
اگر بخواهیم که یک کد رنگ دلخواه را برای تعیین رنگ به کار ببریم، باید کد رابه صورت زیر بنویسیم (مثلا برای کد رنگ#00ff00) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]row.[COLOR=#006633]setBackgroundColor[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Color[/COLOR].[COLOR=#006633]parseColor[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"#00ff00"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[COLOR=#339933]
[/COLOR]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تغییر رنگ پس زمینه item های یک ListView به صورت ترتیبی از چند رنگ (مثلا تکرار 4 رنگ)، در برنامه نویسی اندروید

تغییر رنگ پس زمینه item های یک ListView به صورت ترتیبی از چند رنگ (مثلا تکرار 4 رنگ)، در برنامه نویسی اندروید

فرض کنید بخواهیم رنگ پس زمینه item های یک ListView را به صورت ترتیبی از چند رنگ (مثلا تکرار 4 رنگ) تعیین کنیم :


1096.jpg

برای این منظور، در Activity حاوی ListView ، ابتدا متغیرهای زیر را تعریف می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]public[/B] [COLOR=#003399]String[/COLOR][COLOR=#009900][[/COLOR][COLOR=#009900]][/COLOR] myColors [COLOR=#339933]=[/COLOR] [COLOR=#009900]{[/COLOR][COLOR=#0000FF]"#0000FF"[/COLOR] , [COLOR=#0000FF]"#66FF33"[/COLOR], [COLOR=#0000FF]"#FF3333"[/COLOR], [COLOR=#0000FF]"#FFFF33"[/COLOR][COLOR=#009900]}[/COLOR][COLOR=#339933];[/COLOR]
[B]public[/B] [COLOR=#000066][B]int[/B][/COLOR] myNumber [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR]
[B]public[/B] [COLOR=#000066][B]int[/B][/COLOR] numberOfColors [COLOR=#339933]=[/COLOR] myColors.[COLOR=#006633]length[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دقت شود که کد رنگ های مورد نظرمان را در آرایه ای (Array) با نام myColors و از جنس رشته (String) تعریف کرده ایم. چنانچه رنگ های دیگری مد نظرتان است یا قصد دارید که تعداد رنگ ها را متفاوت انتخاب کنید، باید این آرایه را تغییر بدهید.

سپس باید به سراغ کدهای adapter به کار رفته برای ساخت item های ListView برویم. مثلا فرض کنید که adapter زیر را برای یک ListView به کار برده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][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[/COLOR], parent, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#666666][I]// some codes[/I][/COLOR]

                [B]return[/B] row[COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
کدهای زیر را باید به آن اضافه کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]row.[COLOR=#006633]setBackgroundColor[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Color[/COLOR].[COLOR=#006633]parseColor[/COLOR][COLOR=#009900]([/COLOR]myColors[COLOR=#009900][[/COLOR]myNumber[COLOR=#009900]][/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[B]if[/B][COLOR=#009900]([/COLOR]myNumber[COLOR=#339933]==[/COLOR]numberOfColors[COLOR=#339933]-[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
    myNumber [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][B]else[/B][COLOR=#009900]{[/COLOR]
    myNumber [COLOR=#339933]=[/COLOR] myNumber [COLOR=#339933]+[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین کدهای adapter به صورت زیر در می آید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][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[/COLOR], parent, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                row.[COLOR=#006633]setBackgroundColor[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Color[/COLOR].[COLOR=#006633]parseColor[/COLOR][COLOR=#009900]([/COLOR]myColors[COLOR=#009900][[/COLOR]myNumber[COLOR=#009900]][/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [B]if[/B][COLOR=#009900]([/COLOR]myNumber[COLOR=#339933]==[/COLOR]numberOfColors[COLOR=#339933]-[/COLOR][COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
                        myNumber [COLOR=#339933]=[/COLOR] [COLOR=#CC66CC]0[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR][B]else[/B][COLOR=#009900]{[/COLOR]
                        myNumber [COLOR=#339933]=[/COLOR] myNumber [COLOR=#339933]+[/COLOR] [COLOR=#CC66CC]1[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]

                [COLOR=#666666][I]// some codes[/I][/COLOR]

                [B]return[/B] row[COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        
[COLOR=#009900]}[/COLOR][/FONT]
[COLOR=#009900]
[/COLOR]
[/FONT][/COLOR]

دانلود فایل های پروژه اندروید
دانلود فایل apk برنامه اندروید
 

پیوست ها

  • 165.zip
    1.9 مگایابت · بازدیدها: 0
  • 166.zip
    322.9 کیلوبایت · بازدیدها: 0

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تغییر ظاهر item های ListView ، در حالت های مختلف اشاره بر روی آنها در برنامه نویسی اندروید

تغییر ظاهر item های ListView ، در حالت های مختلف اشاره بر روی آنها در برنامه نویسی اندروید

تغییر ظاهر item های ListView ، در حالت های مختلف اشاره بر روی آنها (حالت های focused و focused and pressed و pressed و default)، در برنامه نویسی اندروید :



فرض کنید که قصد داریم که هنگام اشاره کاربر بر روی item های ListView (برای حالت های focused و focused and pressed و pressed و default)، ظاهر item اشاره شده، تغییر پیدا کند. برای این منظور، فرض کنید که مثلا کدهای فایل xml حاوی تگ ListView ، به صورت زیر باشد :
کد:
[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]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"#FFF"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]ListView[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/el"[/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]divider[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@null"[/COLOR]
        android[COLOR=#339933]:[/COLOR]dividerHeight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"0dp"[/COLOR]  [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]RelativeLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
مشخصه های زیر را به تگ ListView اضافه می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]android[COLOR=#339933]:[/COLOR]drawSelectorOnTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
android[COLOR=#339933]:[/COLOR]listSelector[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/listview_selector_1"[/COLOR][/FONT]
[/FONT][/COLOR]
یعنی کدهای فایل 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]background[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"#FFF"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR][COLOR=#003399]ListView[/COLOR]
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/el"[/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]divider[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@null"[/COLOR]
        android[COLOR=#339933]:[/COLOR]dividerHeight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"0dp"[/COLOR]
        android[COLOR=#339933]:[/COLOR]drawSelectorOnTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
        android[COLOR=#339933]:[/COLOR]listSelector[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/listview_selector_1"[/COLOR]  [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]RelativeLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
با قرار دادن مشخصه drawSelectorOnTop برابر true ، تعیین کرده ایم که تغییراتی که مد نظرمان است (یعنی Selector ای که انتخاب خواهیم کرد)، بر روی لایه مربوط به item قرار بگیرد (نه در پشت آن). مثلا در ادامه، ما رنگ های مختلفی (معمولا نیمه شفاف که item هم مشخص باشد) را برای تغییرات item ها در نظر می گیریم که بر روی کل item نمایش داده می شوند (آن را می پوشانند).

با مشخصه listSelector ، به Selector ای که ویژگی های حالت های مختلف را تعریف می کند، اشاره کرده ایم (چگونگی ساخت آن را در ادامه شرح می دهیم).

اکنون در پوشه های drawable از پروژه اندروید، یک فایل xml با نام listview_selector_1.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]selector 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]state_focused[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR] android[COLOR=#339933]:[/COLOR]drawable[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@color/color_1"[/COLOR] [COLOR=#339933]/>[/COLOR]     [COLOR=#339933]<!--[/COLOR] focused [COLOR=#339933]-->[/COLOR]
    [COLOR=#339933]<[/COLOR]item android[COLOR=#339933]:[/COLOR]state_focused[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR] android[COLOR=#339933]:[/COLOR]state_pressed[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]android[COLOR=#339933]:[/COLOR]drawable[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@color/color_2"[/COLOR] [COLOR=#339933]/>[/COLOR]     [COLOR=#339933]<!--[/COLOR] focused and pressed [COLOR=#339933]-->[/COLOR]
    [COLOR=#339933]<[/COLOR]item android[COLOR=#339933]:[/COLOR]state_pressed[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR] android[COLOR=#339933]:[/COLOR]drawable[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@color/color_3"[/COLOR] [COLOR=#339933]/>[/COLOR]     [COLOR=#339933]<!--[/COLOR] pressed [COLOR=#339933]-->[/COLOR]
    [COLOR=#339933]<[/COLOR]item android[COLOR=#339933]:[/COLOR]drawable[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@color/color_4"[/COLOR] [COLOR=#339933]/>[/COLOR]     [COLOR=#339933]<!--[/COLOR] [B]default[/B] [COLOR=#339933]-->[/COLOR]
[COLOR=#339933]</[/COLOR]selector[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
مشاهده می کنید که برای 4 حالت زیر، چهار رنگ را تعیین کرده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]focused   [COLOR=#339933]-->[/COLOR]   color_1
focused and pressed   [COLOR=#339933]-->[/COLOR]   color_2
pressed   [COLOR=#339933]-->[/COLOR]   color_3
[B]default[/B]   [COLOR=#339933]-->[/COLOR]   color_4[/FONT]
[/FONT][/COLOR]
این 4 رنگ (که معمولا نیمه شفاف انتخاب می شوند، البته اگر بر روی item ها قرار بگیرند) را باید در فایل colors.xml در پوشه values تعریف کنیم.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
قرار گرفتن یک لایه نیمه شفاف بر روی item انتخاب شده از ListView ، با مشخصه listSelector ، در برنامه نویسی اندروید

قرار گرفتن یک لایه نیمه شفاف بر روی item انتخاب شده از ListView ، با مشخصه listSelector ، در برنامه نویسی اندروید

قرار گرفتن یک لایه نیمه شفاف (رنگی به صورت نیمه شفاف) بر روی item انتخاب شده از ListView ، با مشخصه listSelector ، در برنامه نویسی اندروید :

قبلا، استفاده از مشخصه listSelector را شرح دادیم و یک مثال کامل برای تعیین ویژگی های ظاهری برای حالت های مختلف item های ListView شرح داده شد. ضمن اینکه توصیه می شود آن کلید را بخوانید، در این کلید قصد داریم که یک مثال ساده تر را برای تغییر ظاهر item انتخاب شده، شرح بدهیم.

قصد داریم تعیین کنیم که اگر بر روی یکی از item های ListView اشاره شد (در واقع، آن item انتخاب شد)، یک لایه نیمه شفاف بر روی آن قرار بگیرد و پس از اینکه کاربر انگشت خود را از روی item برمی دارد، تا زمانی که هنوز item دیگری را انتخاب نکرده، همچنان آن لایه بر روی آن item باقی بماند :

1318.jpg

ابتدا باید کد متناظر برای لایه نیمه شفاف (رنگی به صورت نیمه شفاف) را پیدا کنیم.
کد زیر را انتخاب می کنیم (رنگ سیاه به میزان 25 درصد را انتخاب کرده ایم) :

کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]#[COLOR=#CC66CC]40000000[/COLOR][/FONT]
[/FONT][/COLOR]
سپس باید در کدهای مربوط به تگ ListView در فایل xml ، مشخصه های زیر را اضافه کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]android[COLOR=#339933]:[/COLOR]drawSelectorOnTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
android[COLOR=#339933]:[/COLOR]listSelector[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"#40000000"[/COLOR][/FONT]
[/FONT][/COLOR]
یعنی به عنوان مثال، کدهای تگ ListView مشابه کدهای زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR][COLOR=#003399]ListView[/COLOR] android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/listView1"[/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]divider[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@null"[/COLOR]
    android[COLOR=#339933]:[/COLOR]dividerHeight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"0dp"[/COLOR]
    android[COLOR=#339933]:[/COLOR]drawSelectorOnTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
    android[COLOR=#339933]:[/COLOR]listSelector[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"#40000000"[/COLOR] [COLOR=#339933]/>[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
دلیل به هم ریختگی ظاهر item های ListView هنگامی که کدها را بر اساس متغیر position در روش getView نمی نویسیم

دلیل به هم ریختگی ظاهر item های ListView هنگامی که کدها را بر اساس متغیر position در روش getView نمی نویسیم

دلیل به هم ریختگی ظاهر item های ListView هنگامی که کدها را بر اساس متغیر position در روش getView نمی نویسیم (مستقل بودن کدها از شماره item ها ، در روش getView که در Adapter مربوط به ListView نوشته می شود) :



یکی از مواردی که ممکن است با آن برخورد کرده باشید، این است که هنگامی که به بالا و پایین ListView می رویم، ظاهر item های ListView به هم می ریزد (البته این مورد، کاملا به نوع کدها وابسته است). دلیل این مسئله این است که ما در روش getView که در Adapter مربوط به ListView تعریف می کنیم، کدها را مستقل از متغیر position می نویسیم. برای درک بهتر این موضوع، به ساختار یک Adapter دلخواه برای ListView توجه کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][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]
                [COLOR=#003399]View[/COLOR] row [COLOR=#339933]=[/COLOR] convertView[COLOR=#339933];[/COLOR]         
                [B]if[/B] [COLOR=#009900]([/COLOR]row [COLOR=#339933]==[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][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]
                        row [COLOR=#339933]=[/COLOR] inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]list_item[/COLOR], parent, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#009900]}[/COLOR]
                
                [COLOR=#003399]String[/COLOR] stringName [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"string_key_"[/COLOR] [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] 
                [COLOR=#000066][B]int[/B][/COLOR] string_res_ID [COLOR=#339933]=[/COLOR]getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]stringName,[COLOR=#0000FF]"string"[/COLOR],getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#003399]String[/COLOR] my_string [COLOR=#339933]=[/COLOR] getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getString[/COLOR][COLOR=#009900]([/COLOR]string_res_ID[COLOR=#009900])[/COLOR][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]my_string[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#003399]String[/COLOR] imageName [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"key_"[/COLOR] [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] 
                [COLOR=#000066][B]int[/B][/COLOR] image_res_ID [COLOR=#339933]=[/COLOR]getResources[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]getIdentifier[/COLOR][COLOR=#009900]([/COLOR]imageName,[COLOR=#0000FF]"drawable"[/COLOR],getPackageName[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                ImageView iv [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]ImageView[COLOR=#009900])[/COLOR] row.[COLOR=#006633]findViewById[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]imageView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                iv.[COLOR=#006633]setImageResource[/COLOR][COLOR=#009900]([/COLOR]image_res_ID[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

                [B]return[/B] row[COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
                
                
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
در کد بالا، روش getView به صورت کلی زیر تعریف شده است :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][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][/FONT]
[/FONT][/COLOR]
در کد بالا، متغیر position ، حاوی شماره متناظر با item می باشد و بنابراین اگر قصد داریم که item ها دارای ظاهر متفاوتی باشند، باید مشخصات آنها را بر اساس متغیر position تعیین کنیم.

اما اکنون توضیح بدهیم که اصلا چرا اگر مشخصات به متغیر position وابسته نباشد، با بالا و پایین رفتن در ListView ، ظاهر item ها دوباره تغییر می یابد و به هم می ریزد. هنگامی که روش getView را برای ساخت item های ListView به کار می بریم، تنها item هایی که در صفحه قابل مشاهده می باشند، نگه داشته می شوند و سایر item هایی که قبلا ساخته شده اند، اگر دیگر در صفحه قابل دیدن نباشند، نگه داشته نمی شوند (منطقی است، زیرا شاید تعداد item ها خیلی زیاد باشد و نگه داشتن آنها، مشکلاتی را به وجود بیاورد). مثلا ما از ابتدای ListView شروع به پایین رفتن می کنیم، بنابراین تعدادی از Item هایی که از آنها عبور می کنیم و دیگر دیده نمی شوند، نگه داشته نمی شوند، پس اگر دوباره به ابتدای ListView برویم، آن item ها دوباره بر اساس کدهای روش getView ساخته خواهند شد. بنابراین مشکل از همینجا ایجاد می شود. پس اگر کدها را بر اساس شماره متناظر با item ها بنویسیم، دیگر وابسته به بالا و پایین رفتن در ListView نخواهند بود.

علاوه بر نکته بالا، باید این بخش از روش getView نیز به درستی کدنویسی شده باشد (ساختار آن مشابه کد زیر باشد) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]View[/COLOR] row [COLOR=#339933]=[/COLOR] convertView[COLOR=#339933];[/COLOR]         
[B]if[/B] [COLOR=#009900]([/COLOR]row [COLOR=#339933]==[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][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]
        row [COLOR=#339933]=[/COLOR] inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]list_item[/COLOR], parent, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[COLOR=#009900]
[/COLOR]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
رفع مشکل جابجا شدن اطلاعات نمایش داده شده در WebView های موجود در item های ListView ، هنگام اسکرول صفحه، در برنامه نویسی اندروید

رفع مشکل جابجا شدن اطلاعات نمایش داده شده در WebView های موجود در item های ListView ، هنگام اسکرول صفحه، در برنامه نویسی اندروید

قبلا در مورد چگونگی رفع مشکل جابجا شدن مقادیر نمایش داده شده در عنصر های موجود در item های ListView ، توضیحاتی را ارائه دادیم، اما موارد گفته شده در آن مبحث، برای عنصر WebView به درستی عمل نمی کند و شاهد جابجا شدن اطلاعات هنگام اسکرول صفحه خواهیم بود.دلیل عدم کارایی روش های معمول برای WebView ، می تواند ساختار متفاوت آن با سایر عنصرها باشد. ویژگی اصلی آن هم این است که کمی طول می کشد تا اطلاعات را بارگذاری کند.

راه این مشکل، تعیین ویژگی زیر در روش getView از Adapter تعیین شده برای ListView می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]View[/COLOR] result [COLOR=#339933]=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
که در آن، result همان View ای است که در انتهای روش getView برمی گردانیم (با کلمه return). کل کدهای روش getView می تواند مشابه کد زیر باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]@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]
        [COLOR=#666666][I]// View result = convertView; //---- change [/I][/COLOR]
        [COLOR=#003399]View[/COLOR] result [COLOR=#339933]=[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]  [COLOR=#666666][I]//---- change [/I][/COLOR]
        
        [B]if[/B] [COLOR=#009900]([/COLOR]result [COLOR=#339933]==[/COLOR] [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                LayoutInflater inflater [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]LayoutInflater[COLOR=#009900])[/COLOR]ctx.[COLOR=#006633]getSystemService[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Context[/COLOR].[COLOR=#006633]LAYOUT_INFLATER_SERVICE[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                result [COLOR=#339933]=[/COLOR] inflater.[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]layoutId, parent, [COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
        
        WebView wv_1 [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]WebView[COLOR=#009900])[/COLOR] result.[COLOR=#006633]findViewById[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]webView1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#003399]String[/COLOR] html_code [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"<html><body>ُSome HTML Code</body></html>"[/COLOR][COLOR=#339933];[/COLOR]
        wv_1.[COLOR=#006633]setVerticalScrollBarEnabled[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#666666][I]// dont show ScrollBar when loading[/I][/COLOR]
        wv_1.[COLOR=#006633]setHorizontalScrollBarEnabled[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000066][B]false[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#666666][I]// dont show ScrollBar when loading[/I][/COLOR]
        wv_1.[COLOR=#006633]loadData[/COLOR][COLOR=#009900]([/COLOR]html_code, [COLOR=#0000FF]"text/html"[/COLOR], [COLOR=#000066][B]null[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]


        [B]return[/B] result[COLOR=#339933];[/COLOR]

        [COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
البته باید دقت داشت که با تعیین این ویژگی، اسکرول صفحه کمی کند می شود و هنگام اسکرول، ممکن است که اطلاعات WebView را به صورت چشمک زن ببینیم.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ساخت ListView بی نهایت (لیست بی پایان - Endless ListView)، در برنامه نویسی اندروید

ساخت ListView بی نهایت (لیست بی پایان - Endless ListView)، در برنامه نویسی اندروید

پروژه اندرویدی که در این مبحث ارائه می شود، از سایت دیگری می باشد که لینک منبع آن در انتهای مبحث ذکر شده است.

این پروژه اندروید، در مورد ساخت ListView بی نهایت (لیست بی پایان - Endless ListView) می باشد که با الهام از آن، می توانیم ListView های بی نهایت و یا با تعداد item بالا را بسازیم که به دلیل تعداد زیاد item ها، باید item ها در چند مرحله وارد صفحه نمایش شوند. در هر مرحله از ورود تعداد جدیدی از item ها، یک ProgressBar نمایش داده می شود :

kelidestan.com_0001435291521tbioL5nvF9ZsjCXekbDhL4Szf.jpg

kelidestan.com_0001435291521R0zRcShcoP7mLI6V4RF0w8MaO.jpg


kelidestan.com_0001435291522KWxcT5HmzIJyJLfsKIkkqyyS7.jpg

نکته مهم :

در این پروژه اندروید، از روش ArrayAdapter.addAll استفاده شده است که در API های پایین تر از 11 خطا ایجاد می کند. برای رفع خطای مورد نظر، کلید شماره 2897 را بخوانید.

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

پیوست ها

  • OeVbwOkmJoE.zip
    1.1 مگایابت · بازدیدها: 0
  • 9hUfR8yyhq.rar
    219 کیلوبایت · بازدیدها: 0
بالا