آموزش جاوا و اندروید

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

آموزش جاوا و اندروید

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

طبقه بندی موضوعی

۱۰ مطلب با موضوع «آموزش اندروید :: ریسایکلر ویو» ثبت شده است

از کامپوننت ItemTouchHelper برای swipe یا move کردن آیتم های ریسایکلر ویو استفاده می شود. مثلا در کد زیر با swipe کردن به چپ یا راست، آیتم مورد نظر حذف خواهد شد. کد هایلایت شده نحوه معرفی این ویژگی به ریسایکلر ویو را نشان می دهد.

۰ نظر موافقین ۰ مخالفین ۰ ۰۷ اسفند ۹۹ ، ۰۰:۰۱
میم دال

DiffUtil یک کلاسی هست که برای ریسایکلر ویو تعریف شده و به کمک اون میشه ریسایکلر ویو رو آپدیت کرد. تا قبل از این برای آپدیت ریسایکلر ویو از notifydatasetchanged استفاده می کردیم که هزینه زیادی داره، چون به ازای هر آیتم متدهای onCreateViewHolder و onBindViewHolder فراخونی می شوند. اما DiffUtil پرفورمنس بهتره داشته و انیمیشن قشنگی به آیتم ها می دهد.

یک کلاس جدید ایجاد کرده و آن را از DiffUtil.Callback اکستند می کنیم. کلاس DiffUtil.Callback، کلاسی ابسترکت بوده که چهار متد ابسترکت دارد که می بایست پیاده سازی شود. اوور راید کردن متد getChangePayload اختیاری است که در ادامه توضیح داده می شود. 

۱ نظر موافقین ۰ مخالفین ۰ ۰۶ اسفند ۹۹ ، ۰۴:۱۵
میم دال

برای اینکه آیتم های ریسایکلر ویو از هم فاصله داشته باشن (معمولا آیتم ها کارد ویو هستن) در rootکه همون کارد ویو هست اتریبیوت زیر را اضافه میکنیم:

 

app:cardUseCompatPadding="true"

 

 

۰ نظر موافقین ۰ مخالفین ۰ ۲۴ آذر ۹۹ ، ۱۷:۲۱
میم دال

ممکنه بخواهیم آیتم های ریسایکلر ویو رو مرتب سازی کنیم. (مثلا توی اپ Voice Recorder فایل های ضبط شده برحسب تاریخ مرتب سازی شدن). برای این کار باید لیستی که به ریسایکلر ویو میدیم رو برحسب ویژگی مد نظرمون sort کنیم.

برای این کار کلاس model باید اینترفیس comparable یا comparator رو پیاده سازی کنه. این دو تا مثل هم هستن ولی تفاوت هایی دارن که در جدول زیر اومده:

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۷ آذر ۹۹ ، ۰۸:۱۵
میم دال

با ریسایکلر ویو یه پروژه شبیه آلبوم زدم و خیلی دوسش دارم.

 

 

۰ نظر موافقین ۰ مخالفین ۰ ۲۲ مرداد ۹۹ ، ۰۲:۲۱
میم دال

از لیوت منیجر برای نحوه نمایش ریسایکلر ویو استفاده میکنیم. کلا سه نوع هست:

 

1. LinearLayoutManager

پارامتر دوم میگه نحوه نمایش عمودی هست و پارامتر سوم میگه لازم نیست لیست برعکس شه.

 

۰ نظر موافقین ۰ مخالفین ۰ ۲۱ مرداد ۹۹ ، ۱۳:۴۳
میم دال

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

 

۱ نظر موافقین ۰ مخالفین ۰ ۲۰ مرداد ۹۹ ، ۲۱:۴۴
میم دال

دریافت پوزیشن کلیک شده در ریسایکلر ویو: (خیلی به درد بخوره)

 

برای این کار دو تا متد هست که هر دو توی کلاس ViewHolder هستن:

1. دپریکیت شده.

 

getAdapterPosition()

2.

getLayoutPosition()

این دو تا متد خروجی int دارن و شماره آیتم فعلی کلیک شده در ریسایکلر ویو رو میدن.

۰ نظر موافقین ۰ مخالفین ۰ ۲۰ مرداد ۹۹ ، ۲۰:۳۵
میم دال

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

 

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

۰ نظر موافقین ۰ مخالفین ۰ ۱۶ مرداد ۹۹ ، ۰۲:۵۵
میم دال

ریسایکلر ویو مثل لیست ویو میمونه ولی پیاده سازیش راحت تره.

1. باید یک کلاس اداپتر براش بنویسیم که از کلاس RecyclerView.Adapter اکستند میشه و ویو هلدر تایپ جنریک اون هست.

۰ نظر موافقین ۰ مخالفین ۰ ۱۹ اسفند ۹۸ ، ۲۱:۵۶
میم دال