استفاده از ListView در يك ScrollView
سلام دوستان نازنين. شبتون بخير
من اومدم يه پروژه مثل بازار ايجاد كنم. فكر كنم همتون ديديد كه انتهاي مثلا محصول بازار بخش كامنتها هست. كه خوب اون از يه ListView استفاده كرده كه ليست كامنتا اونجا درج شده.
من اينكارو كامل انجام دادم هيشچ مشكلي هم نداره. تنها مشكلي كه داره اينه كه من ListView رو گذاشتم داخل ScrollView اصليم كه مثلا وقتي اسكرول ميشه و مياد ميرسه به آخر مطالب قسمت كامنتهارو نشون بده. مشكلي كه وجود داره اينه كه... ListView اسكرول نميخوره كه كامنتهاي زيري رو ببينم :(
كسي ميتونه كمك كنه؟ اينم شكلش:
- يه سرچي كه تو نت زدم مثلا اينجا: ListView inside ScrollView is not scrolling on Android گفته كه نميشه ليست وئيو بزارين توي اسكرول ويو، بلكه نهايتا بايد به عنوان footer يا header ازش استفاده كنيد! سعي كردم اينكارو بكنم اما جواب نداد. شما اگه راهي بلدين يا همين موردي كه گفته رو اكه با نمونه كد راهنمايي كنيد ممنون ميشم
- راه حل دوم اينه كه ليست ويو بشه ويو اصليمون و اسكرول ويو رو به عنوان هدر بهش اضافه كنم!
مثل مال بازار:

---------------------------- متن جديد ------------------------------
من اومدم ديباگ رو ران كردم واسه كافه بازار و Layoutش رو بررسي كردم.
همونطور كه تو شكل زير ميبينيد، كلا به جاي اون اسكرول ويئو از يه ليست ويئو استفاده كرده. بعد اومده احيانان اون اسكرول ويو رو كرده هدرش يا يكي از item ها و لايه كامنتهارو زيرچسبونده.
حالا برفرش مثالم ما اومديم اون لايه رو هدر كرديم. و بقه ليست ويئو هم شد كامت. چيكار كنيم كه اسكرول بخوره تمام لايه هدر رو نشون بده. به انتهاي لايه هدر كه رسيد از تهش 200dp رو اختصاص بده به ليست ويومون كه كامنتهارو نشون بده؟
امیدوارم مفید باشه ، در هر جایی از برنامه زمانی که دو عدد اسکرول درون هم قرار میگیرند این مشکل به وجود میاید که هر کدام مشکلات خاص خود را داد مثل گرید ویو با اسکرول ویو یا لیست ویو با اسکرول ویو و ....
برای حل مشکل لیست ویو میتونید از روش زیر خیلی راحت این مشکل رو برطرف کنید ، در این روش دیگر احتیاجی به اسکرول ویو نیست و آن را باید از کد های لایه حذف کرد :
final View header = getLayoutInflater().inflate(R.layout.your_header, null);
listview.addHeaderView(header);
همچنین اگر در انتهای لیست ویو بخواهید چیزی قرار گیرد میتوانید از این کد استفاده کنید :
final View footer= getLayoutInflater().inflate(R.layout.your_footer, null);
listview.addFooterView(footer);
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .

