انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
دوباره ساخته شدن آیتم ها در لیست ویو در حین اسکرول (در اندروید)

دوباره ساخته شدن آیتم ها در لیست ویو در حین اسکرول (در اندروید)

#1
سلام
من یک لیست ویو دارم که داخلش یک پروگرس بار قرار دادم
وقتی تعداد آیتم ها زیاد میشه و مجبور به اسکرول هستم با شروع اسکرول پروگرس بارم بهم میریزه
می خواستم بدونم نمی شه یه کاری کرد لیست ویو با اسکرول دوباره سازی نشه و آیتم ها رو نگهداره؟
پاسخ

دوباره ساخته شدن آیتم ها در لیست ویو در حین اسکرول (در اندروید)

#2
سلام.
حتی اگر بشه چنین کدی رو هم قرار داد که item ها را نگه دارد، بنده آن را توصیه نمی کنم، زیرا در برخی گوشی ها با حافظه RAM اندک، ممکن است برنامه قفل کند. بنده حدس می زنم که خود ListView به این صورت طراحی شده که تنها View مربوط به تعدادی item فعلی را نگه دارد تا از این مشکل جلوگیری شود (یعنی با اسکرول به بالا یا پایین ListView ، دوباره View مربوط به item هایی که در صفحه قرار می گیرند را می سازد)(برای کدنویسی مشابه کلید شماره 843 دقیقا به همین شکل می باشد، ولی موردی که item ها را نگه دارد را تاکنون کدنویسی نکرده ام). در بخشی از کلید زیر، در این مورد، توضیحاتی داده شده :

کلید شماره 2961

همچنین باید ببینیم که شما ProgressBar را به چه صورت قرار داده اید و چه ارتباطی با ListView دارد. شاید با کمی تغییر در کدهای آن، اسکرول ListView در آن اختلالی ایجاد نکند.
بنده قبلا موردی داشتم که ProgressBar هنگام افزوده شدن تعدادی item به ListView ، به طور موقت نمایش داده می شد (البته در انتهای ListView). این نمایش، در api های جدید مشکلی نداشت، ولی برای یک نسخه قدیمی، مشکل داشت و ProgressBar به اندازه کل پایین صفحه، بزرگ نمایش داده می شد. دقیق حضور ذهن ندارم، ولی فکر می کنم با کمی دستکاری در کدهای لایه ها (layouts) در فایل های xml ، مشکل برطرف شد. البته همزمان با آن تغییرات، روش زیر را هم برای ListView به کار بردم :

کد پی‌اچ‌پی:
lv.setOnScrollListener(new OnScrollListener() { 
    public 
void onScrollStateChanged(AbsListView viewint scrollState) {
        if ( 
scrollState == OnScrollListener.SCROLL_STATE_IDLE )
        {
          
lv.invalidateViews();
        }

    }

    @
Override
    
public void onScroll(AbsListView arg0int arg1int arg2int arg3) {}
}); 

روش setOnScrollListener می تواند برخی تنظیمات مربوط به اسکرول در ListView را تغییر بدهد. مثلا بنده کد بالا را زمانی استفاده کردم که وقتی ListView کل صفحه را پر نمی کرد، در برخی api های قدیمی، اشاره بر روی item ها، از کار می افتاد. 
بنابراین بنده بر اساس تجربه ای که دارم، توصیه می کنم که به صورت همزمان، هم کدهای مربوط به لایه ها را بررسی کنید و هم انواع کدنویسی برای روش setOnScrollListener و همچنین ویژگی های آنها را بررسی کنید و ببینید که موردی هست که مشکل شما را برطرف کند یا خیر.

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط ehtirani ، شماره مجازی امارات


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان