مخفی کردن دسته ای آیتم ها
سلام خدمت دوستان
وقت بخیر
یه سوال داشتم
من یه اسپینر دارم که مقدارهای 1 تا20 توشه
به تعداد عددها،،، CardView دارم
حالا یه case نوشتم که اگه مثلا عدد 1 انتخاب شد CardView شماره 1 Visible بشه و بقیشون Invisible
حالا مشکلی که این وسط هست اینه که در هر حالت،،، من باید توی هر case حدود 20 خط کد بنویسم که فلان cardview رو فعال کن و دیگری ها رو غیر فعال
راهی هست که بگیم همه cardview ها غیرفعال شه بجز فلان cardview ؟؟؟
ممنون
نقل قول: مخفی کردن دسته ای آیتم ها
الان شما یه سری عدد ترتیبی دارید که هرکدوم به یه ویو خاص اشاره می کنن، بنظر میاد که آرایه میتونه گزینه خوبی باشه.
یه آرایه بسازید و توش CardView ها رو به ترتیب قرار بدید. هر عددی انتخاب شد تو یه حلقه کل آرایه رو پیمایش می کنید و هرکدوم از ویو ها رو از آرایه استخراج می کنید و Visibilityشون رو تغییر میدید، همه مخفی میشن بجز اونی که اندیسش در آرایه برابر با عدد مدنظر - 1 هست.
اگر هم از ButterKnife استفاده می کنید (که من خیلی دوسش دارم)، متدی داره بنام apply که روی لیستی از Viewها اجرا میشه و میتونه یه پارامتر از همهی اونا رو با هم تغییر بده (مثل Visibility)
نقل قول: مخفی کردن دسته ای آیتم ها
نقل قول:
نوشته شده توسط
Nevercom
الان شما یه سری عدد ترتیبی دارید که هرکدوم به یه ویو خاص اشاره می کنن، بنظر میاد که آرایه میتونه گزینه خوبی باشه.
یه آرایه بسازید و توش CardView ها رو به ترتیب قرار بدید. هر عددی انتخاب شد تو یه حلقه کل آرایه رو پیمایش می کنید و هرکدوم از ویو ها رو از آرایه استخراج می کنید و Visibilityشون رو تغییر میدید، همه مخفی میشن بجز اونی که اندیسش در آرایه برابر با عدد مدنظر - 1 هست.
اگر هم از
ButterKnife استفاده می کنید (که من خیلی دوسش دارم)، متدی داره بنام apply که روی لیستی از Viewها اجرا میشه و میتونه یه پارامتر از همهی اونا رو با هم تغییر بده (مثل Visibility)
سلام ممنون از راهنماییت
میشه بیشتر توضیح بدی
راستش نمیدونم چطور باید این مدل ارایه رو تعریف کنم...
بعدشم چطوری باید مخفی و نمایش بدم.. :D
نقل قول: مخفی کردن دسته ای آیتم ها
خب الان مگه شما نمیگی من CardView ها همین الانشم مخفی می کنم، اما چون تو Switch هست، باید واسه هر بلاک Case کلی خط کد تکراری بنویسم ؟
پس از الان شما میدونی چطور باید Visibility رو تغییر بدی، فقط میخوای به روش بهتری انجامش بدی
شما بیا یه آرایه درست کن از CardViewها (اونا رو قبلن با findViewById پیدا کردی رو ریختی تو یه متغیر)
CardView[] cvList = {cv1, cv2,....};
بعد مثلن میخای سومی رو نشون بدی باقی رو مخفی کنی، یه حلقه for بساز از 0 تا cvList.length (طول آرایه)
تو حلقه چک می کنی اگه شمارنده حلقه (i) برابر با اون عدد مدنظر شما بود (عدد شما منهای ۱ چون وقتی میگی اولی، یعنی اندیس 0 در آرایه)، VISIBLEش کن، در غیراینصورت INVISIBLE
مهم نیست کدوم خصوصیت رو میخوای تغییر بدی، فقط کافیه شئ رو از آرایه استخراج کنی و متد موردنظر رو روش صدا بزنی
int position = 5;
for (int i = 0; i < cvList.length; i++) {
if (i == position - 1) {
cvList[i].setVisibility(View.VISIBLE);
} else {
cvList[i].setVisibility(View.INVISIBLE);
}
}
نقل قول: مخفی کردن دسته ای آیتم ها
نقل قول:
نوشته شده توسط
Nevercom
خب الان مگه شما نمیگی من CardView ها همین الانشم مخفی می کنم، اما چون تو Switch هست، باید واسه هر بلاک Case کلی خط کد تکراری بنویسم ؟
پس از الان شما میدونی چطور باید Visibility رو تغییر بدی، فقط میخوای به روش بهتری انجامش بدی
شما بیا یه آرایه درست کن از CardViewها (اونا رو قبلن با findViewById پیدا کردی رو ریختی تو یه متغیر)
CardView[] cvList = {cv1, cv2,....};
بعد مثلن میخای سومی رو نشون بدی باقی رو مخفی کنی، یه حلقه for بساز از 0 تا cvList.length (طول آرایه)
تو حلقه چک می کنی اگه شمارنده حلقه (i) برابر با اون عدد مدنظر شما بود (عدد شما منهای ۱ چون وقتی میگی اولی، یعنی اندیس 0 در آرایه)، VISIBLEش کن، در غیراینصورت INVISIBLE
مهم نیست کدوم خصوصیت رو میخوای تغییر بدی، فقط کافیه شئ رو از آرایه استخراج کنی و متد موردنظر رو روش صدا بزنی
int position = 5;
for (int i = 0; i < cvList.length; i++) {
if (i == position - 1) {
cvList[i].setVisibility(View.VISIBLE);
} else {
cvList[i].setVisibility(View.INVISIBLE);
}
}
بسیار عالی
دستت درد نکنه
یه چیزی یادم دادی که خیییییلی کارم جلو میوفته
ممنونم :)