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

خلاصه آموزش:

  • لیست ویو در اندروید

  • ویژگی های لیست ویو

  • ساخت پروژه (کار با لیست ویو) در محیط اندروید استودیو

  • کلیک بر آیتم های لیست ویو

  • کلیک طولانی بر آیتم های لیست ویو

لیست ویو(ListView) نمایی از چند آیتم است که آن ها را در یک لیست عمودی یا افقی قابل اسکرول نمایش می دهد. آیتم های لیست با استفاده از یک آداپتور(Adapter) – که محتوای لیست را از یک منبع، مانند آرایه ی رشته ای یا پایگاه داده می گیرد – به طور خودکار در لیست قرار داده می شودند، امروز با ما باشید با آموزش ساخت و راه اندازی لیست ویو

در حقیقت آداپتور یک پل ارتباطی بین کامپوننت های رابط کاربری و منبع داده هاست که داده ها را به کامپوننت های رابط کاربری وارد می کند. آداپتور داده ها را در خود نگه می دارد و آن ها را به Adapter view ارسال می کند تا view بتواند اطلاعات را از آن گرفته و آن ها را در کامپوننت های مختلف نظیر spinner، list view، grid view وغیره نمایش بدهد.

ListView و GridView زیر کلاس هایی از AdapterView هستند و می توان با متصل کردن آن ها به یک Adapter ، اطلاعات را از یک منبع خارجی مورد بازیابی قرار داد و از آن ها برای مقدار دهی آیتم های ListView و GridView استفاده کرد.

سیستم اندرود چندین زیر کلاس از Adapter را ارئه می دهد که برای بازیابی انواع مختلف داده ها و ساختن view برای یک AdapterView (نظیر ListView یا GridView) استفاده می شود. رایج ترینِ این آداپتورها عبارتند از ArrayAdapter، BaseAdapter ، CursorAdapter ، SimpleCursorAdapter ، SpinnerAdapter و WrapperListAdapter. در این بخش نیز با نحوه ی کار دو نوع آداپتور آشنا خواهیم شد.

ویژگی های ListView

در جدول زیر برخی از مهم ترین ویژگی های ListView آورده شده است

Attribute Description
android:id یک ID برای لایوت مشخص می کند.
android:divider آیتم های لیست را با رنگ، خط ، شکل و یا غیره که برایش تعیین می شود از هم متمایز می کند.
android:dividerHeight عدد بوده و ارتفاع فضای بین آیتم ها را مشخص می کند.
android:entries به آداپتوری که محتوای لیست را تامین می کند اشاره دارد.

ArrayAdapter

هنگامی که منبع داده ها یک آرایه باشد می توان از این آداپتور استفاده کرد. به طور پیش فرض ArrayAdapter با فراخوانی تابع ()toString برای هر عنصر از آرایه یک شی view می سازد و آن را داخل TextView قرار می دهد. فرض کنید یک آرایه ی رشته ای دارید که می خواهید در یک list view نمایش داده شود، بدین منظور با استفاده از تابع سازنده مانند زیر، یک ArrayAdapter را برای مشخص کردن لایوت هر عنصرِ رشته ای مقدار دهی می کنیم

در زیر آرگومان های این تابع سازنده توضیح داده شده است.

اولین آرگومان یعنی this برای دسترسی به محتوای برنامه است و در اکثر توابع این آرگومان را داریم.

دومین آرگومان به فایل XMLی اشاره می کند که از TesxtViewی تعریف شده در آن، برای نمایش تمام عنصرهای رشته ایه موجود در آرایه استفاده می کنیم.

و اما آرگومان سوم آرایه ای است که عناصرش در TextViewها قرار می گیرد.

بعد از اینکه array adapter را ساختید، خیلی راحت متد ()setAdapter را برای شی ListView فراخوانی کنید تا viewهای ساخته شده درون ListView قرار گیرند. مانند قطعه کد زیر

لازم است که listview در مسیر res/layout در یک فایل XML تعریف شود. در مثالی که در ادامه آمده است listview را در فایل activity_main.xml تعریف کرده ایم.

مثال

این مثال نحوه ی ساختن یک برنامه را با استفاده از ListView توضیح می دهد. برای این منظور مراحل جدول زیر را دنبال کنید.

مرحله توضیحات
۱ با استفاده از اندروید استودیو یک پروژه ی جدید با نام List View تحت بسته ی com.example.list.view ایجاد کنید.
۲ محتوای فایل MainActivity.java را مانند آنچه در ادامه آمده است تغییر دهید.
۳ محتوای فایل res/layout/activity_main.xml را مانند آنچه در ادامه آمده است تغییر دهید.
۴ فایل لایه ای listview.xml را در مسیر res/layout ایجاد کنید و محتوایی را که در ادامه آمده است در آن قرار دهید. همچنین با استفاده از Text Viewیی که در این فایل قرار دارد می توانید تنظیمات مربوط به نشان دادن آیتم های لیست مانند رنگ، فونت و غیره را به دلخواه تغییر دهید.
۶ ثابت های رشته ای مورد نیاز را در فایل res/values/strings.xml تعریف کنید.
۷ برنامه را با استفاده از شبیه ساز اندروید استودیو اجرا و نتیجه را مورد بررسی قرار دهید.

در زیر محتوای تغییر یافته ی فایل java/com.example.list.view/MainActivity.java آورده شده است.

در زیر محتوای فایل لایه ای res/layout/activity_main.xml آورده شده است

در زیر کدهای مربوط به فایل res/layout/activity_listview.xml آورده شده است

و اما نهایتا در زیر محتوای فایل res/values/strings.xml آورده شده است:

حال پروژه را اجرا کنید. اگر همه چیز به درستی انجام شود پنجره ی شبیه ساز شما باید مانند تصویر زیر باشد.

SimpleCursorAdapter

هنگامی می توانیم از این آداپتور استفاده کنیم که منبع داده های ما یک Cursor (مکان نما) برای ردیف های پایگاه داده باشد. هنگامی که از SimpleCursorAdapter استفاده می کنیم باید یک فایل XML را تعریف کنیم تا ردیفی که در Cursor قرار دارد، و نیز ستون های آن ردیف در داخل viewهای آن فایل قرار بگیرند.

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

هنگامی که یک نمونه از SimpleCursorAdapter می سازیم، برای استفاده از هر نتیجه ی آن یعنی Cursor حاوی نتایج و دو آرایه ی آن، آن را به لایوت ارسال می کنیم.

پس از آن SimpleCursorAdapter با استفاده از لایوتی که از قرار دادن آیتم های ستون ها در viewی متناظر با آن ها در toViews حاصل می شود، برای هر ردیف موجود در Cursor یک view می سازد.

قابلیت کلیک کردن روی آیتم های ListView

در این مرحله از OnItemClickListener استفاده میکنیم،با استفاده متد OnItemClickListener رویداد کلیک را برای لیست ویو تعریف میکنیم.

قطعه کد ما به صورت زیر میشود :

قابلیت کلیک طولانی کردن روی آیتم های ListView

با استفاده از متد OnItemLongClickListener میتوانیم رویداد کلیک طولانی را برای لیست ویو تعریف کنیم.

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

One thought on “لیست ویو(ListView) ،در برنامه نویسی اندروید”