آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

استفاده از ListView در يك ScrollView

sadra  10 سال پیش  10 سال پیش
+1 0

سلام دوستان نازنين. شبتون بخير

من اومدم يه پروژه مثل بازار ايجاد كنم. فكر كنم همتون ديديد كه انتهاي مثلا محصول بازار بخش كامنتها هست. كه خوب اون  از يه ListView استفاده كرده كه ليست كامنتا اونجا درج شده.

من اينكارو كامل انجام دادم هيشچ مشكلي هم نداره. تنها مشكلي كه داره اينه كه من ListView رو گذاشتم داخل ScrollView اصليم كه مثلا وقتي اسكرول ميشه و مياد ميرسه به آخر مطالب قسمت كامنتهارو نشون بده. مشكلي كه وجود داره اينه كه... ListView اسكرول نميخوره كه كامنتهاي زيري رو ببينم :(

كسي ميتونه كمك كنه؟ اينم شكلش:

  • يه سرچي كه تو نت زدم مثلا اينجا: ListView inside ScrollView is not scrolling on Android گفته كه نميشه ليست وئيو بزارين توي اسكرول ويو، بلكه نهايتا بايد به عنوان footer يا header ازش استفاده كنيد! سعي كردم اينكارو بكنم اما جواب نداد. شما اگه راهي بلدين يا همين موردي كه گفته رو اكه با نمونه كد راهنمايي كنيد ممنون ميشم
  • راه حل دوم اينه كه ليست ويو بشه ويو اصليمون و اسكرول ويو رو به عنوان هدر بهش اضافه كنم!

مثل مال بازار:

---------------------------- متن جديد ------------------------------

من اومدم ديباگ رو ران كردم واسه كافه بازار و Layoutش رو بررسي كردم.

همونطور كه تو شكل زير ميبينيد، كلا به جاي اون اسكرول ويئو از يه ليست ويئو استفاده كرده. بعد اومده احيانان اون اسكرول ويو رو كرده هدرش يا يكي از item ها و لايه كامنتهارو زيرچسبونده.

حالا برفرش مثالم ما اومديم اون لايه رو هدر كرديم. و بقه ليست ويئو هم شد كامت. چيكار كنيم كه اسكرول بخوره تمام لايه هدر رو نشون بده. به انتهاي لايه هدر كه رسيد از تهش 200dp رو اختصاص بده به ليست ويومون كه كامنتهارو نشون بده؟

0 0
فعلا راه حل دي ه اي به ذهنم نميرسه، نظر شما چيه دوستان؟ (10 سال پیش)
+1 0
خب این که کاری نداره شما تمام مطالب بالاتر از لیست ویو رو داخل اسكرول ويو قرار بده و نیازی به قرار دادن لیست ویو در اسكرول ويو نیست. (10 سال پیش)
+1 0
منم همچین چیزی برای برنامم میخام درست کنم که به همین مشکل بر خوردم.اگه این مشکلو حل کردی یه راهنمایی به منم بده. با تشکر. (10 سال پیش)
+1 0
خط android:fillViewport="true" رو به ScrollView اضافه کن احتمالا درست میشه. (10 سال پیش)
+1 0
اینکار شدنی هست ولی باعث میشه لیست ویو شما استاتیک بشه و پترن ویو هلدر از بین بره که باعث میشه دیگه لیست ویو اپتیمایز عمل نکنه و سرعت اجرا کمی پایین بیاد (10 سال پیش)
0 0
محمد حسين جان منم نميخوام كه اينجوري استفاده كنم! واسه همين ميگم راه حل چيه؟ مثلا واسه نشون دادن بخش كامنتها چوري بزارم؟ يا چحوري استفاده كنم؟ (10 سال پیش)
0 0
بهترین کار این هست که از یک دایلوگ یا یک اکتیوتی جدا برای نمایش نظرات استفاده کنید مثلا چند تا نظر آخر رو نمایش بدید و بعد کاربر با زدن دکمه ای به کل نظرات در اکتیویتی دیگه راهنمایی بشه یا دایلوگی براش باز بشه . (10 سال پیش)
0 0
اما گوگل پلي يا بازار اينكارو نكرده! ميخوام مثل اونا بشه! واسه اون چيكار كنم؟ (10 سال پیش)
0 0
عرض کردم مشکل ویو هلدر و افت پرفرمنس دارید . (10 سال پیش)
0 0
الان اسكرولرو به هدر اضافه كنم چي؟ (10 سال پیش)
0 0
اینکار هم امکان پذیر نیست ، بازار هم در واقع همینکارو کرده . ببنید توی کامنت فقط متن هست اونم کوتاه خیلی سرعت رو پایین نمیاره به شرطی که تعداد آیتم ها هم خیلی زیاد نباشه . (10 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
ahmadHaeri  10 سال پیش
+2 0

امیدوارم مفید باشه ، در هر جایی از برنامه زمانی که دو عدد اسکرول درون هم قرار میگیرند این مشکل به وجود میاید که هر کدام مشکلات خاص خود را داد مثل گرید ویو با اسکرول ویو یا لیست ویو با اسکرول ویو و ....

برای حل مشکل لیست ویو میتونید از روش زیر خیلی راحت این مشکل رو برطرف کنید ، در این روش دیگر احتیاجی به اسکرول ویو نیست و آن را باید از کد های لایه حذف کرد :

 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);

 

 

+2 0
همینکارو انجام دادم. اما مشکل اینه که به اندازه کل رکورد ها لیست ویو دراز میشه. اما من میخوام لیست وییوم ارتفاعش بیشتر از 200dp نشه. تو همون ارتفاع اسکرول کنه. مثل مال بازار (10 سال پیش)
0 0
منظور شما را متوجه نشدم دقیق ، شما میتونید هر ارتفاعی که خواستید بذارید ، اگر مطالب زیاد باشه اسکرول میخوره ، اگر کم باشه ، به صورت عادی نمایش داده میشه (10 سال پیش)
0 0
سلام آقا sadra منم همین مشکل و دارم میتونید راهنماییم کنید ممنون (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .