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

چطور از ListView درون ScrollView استفاده کنم ؟ [حل شد]

PandaStudio  11 سال پیش  11 سال پیش
+3 0

سلام دوستان

من میخوام اسکرول لیست ویو را غیر فعال کنم و اون را داخل یک scrollview بذارم تا کار اسکرول کردن را scrollview انجام بده نه لیست ویو برای این کار هم از این مطلب کمک گرفتم نشد لطفا اگه اطلاع دارید راهنمایی کنید.

هدف از این کار هم این هست که میخوام یک لایه مجزا و یک لیست ویو کنار هم داشته باشم که تا وقتی اسکرول میکنم اون لایه بره بالا و مقادیر لیست ویو نشون داده بشه که  بهترین ایده برای اینکار قرار دادن اونها درون یک scrollview هست

 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
کاشی زاده  11 سال پیش
+2 0

شما باید برای لیست ویو که ساختید فقط یک هدر اضافی کنید و نیازی به scrollView نداره .

برای این کار هم باید یک لایه جدا درست کنید که لایه هایی که میخواید به لیست ویو بچسبونید توش میریزید با استفاده از Inflater یه دونه ازش میسازید و با استفاده از کد زیر به لیست ویو میچسبونید .

 

 listView.addHeader(view);

و یا

  listView.addFooter(view);
0 0
اتفاقا به این موضوع هم فکر کرده بودم. فقط یه موردی چون توی لایه مورد نظر یکسری پارامتر میگیرم و بر اساس اونها query میگیرم و نتیجه را توی لیست ویو نشون میدم. باید این کار ها را توی activity که لیست ویو درون اون قرار داره انجام بدم یا داخل adapter لیست ویو؟ (11 سال پیش)
0 0
اگر دقیق تر بگید من متوجه منظورتون نشدم ، در زیر یه پاسخ درست کنید و توش کد مورد نظر رو بگید شاید بتونم کمکتون کنم . (11 سال پیش)
پاسخ به سوال 
PandaStudio  11 سال پیش
0 0

طبق تصویر زیر من میخوام یه چیزی بگیرم و بر اساس اون جستجو کنم و نتیجه را توی لیست ویو نشون بدم. و میخوام وقتی لیست ویو را به سمت بالا اسکرول میکنم قسمت جستجو مثل سایر آیتم های لیست ویو به سمت بالا بره و محو بشه و وقتی به سمت پایین اسکرول میکنم ظاهر بشه. یعنی طوری جلوه کنه که انگار اولین آیتم لیست ویو هست.حالا دو راه هست یا اینکه طبق روشی که من گفتم پیش بریم یا طبق روش شما و هدر تعریف کنیم. اگه هدر تعریف کنیم کد مربوط به جستجو را باید توی اکتیویتی شامل لیست ویو بنویسم یا توی adapter خود لیست ویو؟

0 0
این روشی که گفتید رو بخواین بنویسید کد هاتون میره توی قسمت activity و کنار listView ولی من پیشنهاد میکنم که شما یه ویو بساز و موقع بالا و پایین رفتن لیست ویو gone و visible بکنید بهتر جواب بده نمونه این حالت رو تو آخرین نسخه برنامه اینجاست میتونید ببینید . (11 سال پیش)
0 0
درواقع یه چیزی توی مایه ها بازار تو ذهنمه که نظرات اون پایین اومده البته نسخه بتا که برای توسعه دهنده ها منتشر کرد (11 سال پیش)
پاسخ به سوال 
PandaStudio  11 سال پیش
+4 0

پاسخ نهایی

وقتی یک listView را داخل یک ScrollView قرار میدید با استفاده از متد زیر که listView را به عنوان پارامتر ورودی میگیره میتونید اسکرول لیست ویو را حذف کرده و درواقع ارتفاع لیست ویو را به اندازه محتویات اون قرار بدید و اسکرول کردن را از طریق scrolview انجام بدید. بهترین مثال هم برای این سوالی که من دنبال جوابش بودم قسمت نظرات کافه بازار هست که در ui جدید به پایین صفحه منتقل شده.

 public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            // pre-condition
            return;
        }

        int totalHeight = listView.getPaddingTop() + listView.getPaddingBottom();
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            if (listItem instanceof ViewGroup) {
                listItem.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            }
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
    }

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