میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

ListView در اندروید

مقاله ی حاضر به شما آموزش می دهد چگونه ListView در اندروید را بکار ببرید.

نمایش مجموعه ای سازماندهی شده از المان ها در اندروید یک الگوی بسیار معمول در اپلیکیشن های تحت موبایل است. کاربر رو به روی خود لیستی از آیتم ها را می بیند و می تواند به راحتی داخل آن پیمایش کند. چنین activity در تصویر زیر به نمایش گذاشته شده است.

 

ListView

 

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

 

ListView


 View هایی برای مدیریت لیست ها

چارچوب نرم افزاری ( framework ) اندروید برای پیاده سازی لیست های ساده، دو کلاس ListView و ExpandableListView را ارائه می دهد. با بهره گیری از این دو کلاس، برنامه نویس قادر خواهد بود به راحتی لیست های قابل پیمایش با نوار اسکرول را پیاده سازی کند.

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

 


نوع داده ای آیتم های لیست

آیتم هایی که در لیست به نمایش در می آیند، می توانند یک آبجکت جاوا از هر نوعی باشد. کلاس adapter داده های مربوطه را از  data object ( کلاسی که داده ها در آن کپسوله شده اند ) استخراج کرده و داده های واکشی شده را به viewهای متناظر در ListView تخصیص می دهد.

این آیتم ها به طور معمول همان data model لیست خوانده می شوند. کلاس adapter این داده ها را به عنوان ورودی دریافت می کند. در حقیقت adapter یک پل ارتباطی است که داده ها را از منبع داده (مثلا آرایه) خوانده و آن ها را به Adapter view تحویل می دهد. این داده ها نهایتا در اختیار کامپوننت های UI قرار داده شده و در نمایشگر ارائه می شوند.

 


Adapter ها

adapter در واقع data model اپلیکیشن را مدیریت می کند و آن را با توجه به المان های فردی در widget بروز رسانی کرده و تطبیق می دهد. کلاس adapter خود از کلاس BaseAdapter مشتق می شود.

هر خط که در widget یا المان رابط کاربری اطلاعاتی را نشان می دهد، خود از یک layout تشکیل شده و می تواند بر اساس نیاز پیچیده یا ساده باشد. ظاهر کلی سطرها در لیست اغلب به این صورت است که در سمت چپ یک عکس قابل مشاهده است و در وسط دو خط متن مانند تصویر زیر را شامل می شود.

 

ListView

فایل layout متناظر این سطر از لیست می تواند به صورت زیر باشد.

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip" >
 <ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:layout_marginRight="6dip"
android:contentDescription="TODO"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/secondLine"
android:layout_width="fill_parent"
android:layout_height="26dip"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_toRightOf="@id/icon"
android:ellipsize="marquee"
android:singleLine="true"
android:text="Description"
android:textSize="12sp" />
<TextView
android:id="@+id/firstLine"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@id/secondLine"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_alignWithParentIfMissing="true"
android:layout_toRightOf="@id/icon"
android:gravity="center_vertical"
android:text="Example application"
android:textSize="16sp" />
</RelativeLayout>

کلاس adapter به ازای هر سطر در لیست، layout مربوطه را inflate می کند ( آن را در حافظه بارگذاری و آماده ی نمایش در UI می نماید.) در واقع با استفاده از متد () getView هر layout را واکشی و سپس داده های آن را به view های مرتبط در سطر میزبان متصل می کند.

Adapter از طریق متد setAdapter که به آبجکت ListView الحاق شده، به ListView متصل می شود.

توجه: این تنها ListView نیست که از Adapter استفاده می کند، بلکه سایر view هایی که از Adapterview ارث بری دارند، نظیر Gallery ، Spinner و StackView نیز برای واکشی داده های خود با این کلاس همکاری دارند.

 


فیلتر و مرتب سازی داده ها

فیلتر کردن و مرتب سازی داده ها بر عهده ی adapter می باشد. منطق مربوطه را می بایست در بدنه ی adapter اختصاصی خود (که از کلاس پدر ارث بری کردید) پیاده سازی نمایید.

 


بروز رسانی داده ها در  adapter

متد () notifyDataSetChanged در کلاس adapter زمانی فراخوانی می شود که داده ها تغییر کرده باشند یا داده های جدید در دسترس قرار گرفته باشد.

متد () notifyDataSetInvalidated زمانی صدا خورده می شود که داده ها دیگر در دسترس نباشند

 


تعریف listener برای آگاهی از تغییرات

برای واکنش نشان دادن به تغییراتی که در لیست رخ می دهد (برای مثال انتخابی که کاربر می کند ) لازم است یک ListView بهOnItemClickListener خود الحاق کنید

 

listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(getApplicationContext(),
"Click ListItem Number " + position, Toast.LENGTH_LONG)
.show();
}
});

 


امیدواریم آموزش ListView در اندروید نیز برای شما مفید واقع شده باشد و ادامه آموزش برنامه نویسی اندروید رو دنبال کنید . برای مطالعه پست‌ها بیشتر ، ما را در مدرسه کدنویسی تلگرام  و یا در تی جوان اینستاگرام دنبال کنید.

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟