PDA

View Full Version : RecyclerView با سطرهای متفاوت



slr560
یک شنبه 07 تیر 1394, 23:49 عصر
سلام دوستان
من نیاز دارم که سطر های مختلفی توی لیستم داشته باشم .لیستم از نوع RecyclerView هست
از دوستان کسی هست راهنمایی کنه چجوری باید آداپتورشو بنویسم ؟ و چجوری استفادش کنم؟
۳ سطر متفاوت داره لیستم

132700

Nevercom
دوشنبه 08 تیر 1394, 06:07 صبح
اینو ببین: http://stackoverflow.com/questions/25914003/recyclerview-and-handling-different-type-of-row-inflation

slr560
دوشنبه 08 تیر 1394, 07:07 صبح
اینو ببین: http://stackoverflow.com/questions/25914003/recyclerview-and-handling-different-type-of-row-inflation

اتفاقا همینو داشتم میدیدم قبل اینکه پست بزارم
یه تلاش دیگه میکنم

slr560
دوشنبه 08 تیر 1394, 08:33 صبح
تا حدی گرفتم موضوع چیه
فقط یه چیزی. داده های که به آداپتور میدم به چه شکلی باید باشه ؟؟
یعنی مثلا یه دونه لیست تعریف کنم و بدم به ورودی آداپتور که ایندکس اولش یه سطر هست ، ایندکس دوم یه سطر متفاوت و بقیه ایندکس ها با سطرهای متفاوت دیگه
یا اینکه برای هر سطر یه لیست جداگونه بدم به آداپتور. اینجوری ورودی آداپتور ۳تا لیست میگیره
اینو ممنون میشم راهنمایی کنی

gilas1368
دوشنبه 08 تیر 1394, 09:15 صبح
نظر من اینه ک شما اول ی لیست بسازید و مقادیرتون رو داخلش set کنین فقط این فیلد باید ی متغیر برای تشخصی تایپ داشته باشه
بعد در زمان onCreateViewHolder با توجه به ب فیلد type لایه اتون رو انتخاب میکنین و دیتاهای اون رو براش تنظیم میکنین

Nevercom
دوشنبه 08 تیر 1394, 15:49 عصر
خب بستگس داره به اینکه نیازت چی باشه، عموماً اینطوره که محتوایی که نمایش میدیم همه ذاتاً از یک جنس هستن، اما تعدادی رو میخوایم متفاوت نمایش بدیم (مثلاً همه معرفی موبایل هستن، اما بعضی ها رو بعنوان پیشنهاد ویٓژه میخوایم نمایش بدیم)، جالا برای اینکه تشخیص بدی کدوم رو به شکلی نمایش بدی، احتمالاً یه فیلدی داری که مدل رو مشخص می کنه.

ضمن اینکه فکر می کنم مدیریت چند لیست در آداپتور کمی دشوار باشه

slr560
پنج شنبه 11 تیر 1394, 14:14 عصر
دوستان من مشکلم رفع شد . از ایندکس اون لیستی که به آداپتور دادم استفاده کردم . مثلا تعیین کردم ایندکس 0 ویوتایپ 0 ، ایندکس 1 ویوتایپ 1 , .....
چون فقط ۲تا ایتم اول لیستم فرق میکرد . زیاد مشکل نبود
حالا یه سوال اساسی دارم
فرض کنید لیستی که به آداپتور میدیم از چندین مدل تشکیل شده باشه . مثلا ایندکس اول یه مدل از کامنت باشه ،‌ایندکس دوم یه مدل از نمایش کانتکت باشه و ۱۰ مدل دیگه ....
حالا این آیتم ها که از یک جنس نیستن که ما بیام همشو توی یه لیست از یک جنس بزاریم
در نتیجه نمیشه واسه هر سطر لیست ، یک ویوتایپ گزاشت. این لیست رو چجوری باید توی متد getItemViewType() تحلیلش کرد؟

Nevercom
پنج شنبه 11 تیر 1394, 18:41 عصر
اگر واقعاً نیاز داشته باشی تا محتوایی کاملاً متفاوت از همدیگه رو تو لیست نمایش بدی و آبجکت ها کاملاً متفاوت از هم باشن، باز هم میتونی پیاده سازیش کنی.فرض کن لیستی که به آداپتور میدی شامل یه کلاس هست که یه فیلدش جنس رو مشخص می کنه (مثلاً یه int) و فیلد بعدی هم از جنس Object باشه و به تناسب فیلد اول، اشیاء مختلف توش قرار بگیره.حالا هروقت نیاز داشتی بنابر مقدار فیلد اول که حنس رو مشخص می کنه، شئ ی که تو فیلد دوم هست رو به کلاس متناظرش Cast می کنی.

slr560
پنج شنبه 11 تیر 1394, 18:48 عصر
اگر واقعاً نیاز داشته باشی تا محتوایی کاملاً متفاوت از همدیگه رو تو لیست نمایش بدی و آبجکت ها کاملاً متفاوت از هم باشن، باز هم میتونی پیاده سازیش کنی.فرض کن لیستی که به آداپتور میدی شامل یه کلاس هست که یه فیلدش جنس رو مشخص می کنه (مثلاً یه int) و فیلد بعدی هم از جنس Object باشه و به تناسب فیلد اول، اشیاء مختلف توش قرار بگیره.حالا هروقت نیاز داشتی بنابر مقدار فیلد اول که حنس رو مشخص می کنه، شئ ی که تو فیلد دوم هست رو به کلاس متناظرش Cast می کنی.

به نظرت لیستی از hashMap باشه چطوره؟
مقدار‌ اول hashMap نوع رو مشخص میکنه و مقدار‌ دومش که از نوع object هست خود داده هست
حالا با توجه به نوع میایم object رو کست میکنیم

Nevercom
پنج شنبه 11 تیر 1394, 20:24 عصر
آره هش مپ گزینه ی مناسبی بنظر میرسه