بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

بازگذاری داینامیک آیتم ها در لیست ویو  [حل شد]

مدیریت گفتگو
مجتبی یگانه 12 سال پیش
آخرین تغییر: 11 سال پیش

سلام ، من مشکلی ندارم که چطوری بگیریم چیکار کنم و ... !

مشکل اینه ، کی لود کنم !

Listview.setOnScrollListener(new OnScrollListener() {

 @Override
 public void onScrollStateChanged(AbsListView view, int scrollState) {
  
 }


 @Override
 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) { } });

خوب ، با این دستورات ، ما میتونیم چک کنیم ببینیم باید آپدیت بشه یا نه ، اما سوال اینجاست ، میخوام ببینم کل ارتفاع لیست الان چقدره ، موقعیت فعلی کجاست ! ، یا اگه شما الگوریتم خوبی واسه زمان بارگذاری آیتم های جدید دارید ، ممنون میشم بگید

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

نظرات

EloMan 12 سال پیش
اتفاقا منم دنبال همین موضوعم و چون مبتدیم مقداری سرچ کردم.به کتابخانه cwac-endless رسیدم. همه جا بهش لینک دادن و میگن کامله البته چند الگوریتم دیگه هم دیدم که مثل شما ایمپلمنت کرده بودن ولی جالب نبود. هنوز اینو تست نکردم لینک
Spirit 12 سال پیش
این متد دوم که اولین آیتم ، تعداد اونایی که دیده میشن و تعداد کل آیتم ها رو میده ، بیشتر توضیح بده.
YouNes Sh 11 سال پیش
لینک نمونه پروژه خرابه از کجا میتونم دانلود کنم؟

پاسخ‌ها 6

مشاهده پاسخ صحیح
Spirit 12 سال پیش

اتفاقا امروز داشتم با برنامم ور میرفتم ، این مبحث افزوده شدن آیتم ها به لیست موقع رسیدن به انتهای لیست اونقدر ترسناک بوده برام که اصلا حتی به مثال هایی که پیدا کردم هم نگاه نمیکردم ، الان الکی این طوری نوشتم و در عین ناباوری موقع رسیدن به انتهای لیست اطلاعات جدید وارد لیست شد :

 listView.setOnScrollListener(new OnScrollListener() {

@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {

}

@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (totalItemCount == visibleItemCount + firstVisibleItem) {
btnAddDefaults(view);
adapter.refresh();
}

}
});

نظرات

مجتبی یگانه 12 سال پیش

اسپیریت جان شاید عمل کرده باشه ، ولی الگوریتم درستی نیست ! من خودم چند حالت رو تست کردم ! ، شما با یه 2 2 تا 6 تای ساده میتونید بفهمید !

totalItemCount // کل آیتم های لیست
visibleItemCount // کل آیتم هایی که قابل مشاهده هستند
firstVisibleItem // اولین آیتمی که مشاهده میشه
scrollState // الان کاربر اسکرول رو نگه داشته ، داره اسکرول میکنه یا تموم شده یا ... که خیلی مهم نیست واسه ما
AbsListView view // راست و حسینی ، دقیق نمیدونم !

کل آیتم ها == کل آیتم های قابل مشاهده + اولین آیتم قابل مشاهده 
یعنی در واقع برای شرط ممکنه این حالت پیش بیاد !

if(15+60==400){
// load new items !
}

چیزی که من دنبالشم اینه ! ، میگیم برادر من ، کل ارتفاع لیست ویو چقدره ؟ پاسخ -> 4000 
میگیم فدات شم الان اسکرولت کجاست ؟! ، میگه 2000 !
میگیم دمت گرم ، هر وقت رسیدی به 500-4000 یه ندا بده ما آیتم جدید لود کنیم !

حالا ما میتونیم ارتفاع لیست ویو یا گرید ویو رو بگیریم  اما اینکه بقیش :| !

نظرات

Spirit 12 سال پیش
فقط خواستم شعفی که در وجودم ایجاد شد رو نشون بدم ، ولی باز نگرفتم مشکلت دقیقا کجاست؟ بقیش یعنی چی؟
مجتبی یگانه 12 سال پیش
"ولی باز نگرفتم مشکلت دقیقا کجاست؟" : مشکل اینه که چه زمانی آینم جدید لود کنم ، مثلا اگر اسکرول 50 dip مونده بود به آخر لود کنم ، ولی خوب نمیتونم مقدار اسکرول شده فعلی رو بگیرم ! ، اگه منظورت از " بقیش یعنی چی؟" بقیه ی ورودی ها بود ، ویرایش کردم !
حامد 12 سال پیش
من lazy listview شنیدم که مثل لیست سوالات این سایت عمل میکنه ... اما اینی که شما دنبالش هستین عجیبه
مجتبی یگانه 12 سال پیش
همون رو میخوام دیگه ! ، سورسی چیزی داری ؟!
حامد 12 سال پیش

همونی که همین دوستمون گفت درسته

https://github.com/commonsguy/cwac-endless

لینک stackoverflow را هم بخون ببین همونیه که میخوای :

stackoverflow

stackoverflow2

.................................

اینم ببین  ... البته فکر کنم برای load عکس باشه

https://github.com/dtitov/SpinList

نظرات

مجتبی یگانه 12 سال پیش
والله چی بگم !! ، این رو تست کردم ، الان که حسش نیست ، فردا شب دوباره چک میکنم ، اما خدایی لیست ویو رو اعصابمه ! ، تشکر
مجتبی یگانه 12 سال پیش
خیلی عالی بود ، تشکر mariot جان ، لطفا این کامنت رو پاک کنید و به عنوان پاسخ درج کنید
EloMan 12 سال پیش
خواهش میکنم. توی کل این آموزش ها از AsynsTask استفاده میشه ولی استاد اینو قبول ندارن و روی ترد جاوا اصرار دارن.
Hajhosseini 12 سال پیش

دوست عزیز جواب سوالت خیلی سادست . . .
به هر آیتم یک ID اختصاص بده و زمانی که اونارو به لیست ویو ADD میکنی تعداد دقیق رو بگیر.البته تعداد میتونه آخرین ID هم باشه ، اگر خواستی بدونی الان کجای لیست هستی و کدوم ID دیده میشه فقط کافیه ID آیتمی که ساخته میشه (نمایش داده میشه) رو بگیری . آیدی رو هم توی Struct Note با توجه به مثال استاد درست کن و تمام . . . 
من هم توی برنامم همین مشکل رو داشتم و اینجوری رفعش کردم.

نظرات

EloMan 12 سال پیش

بنا به درخواست دوستان جوابش کردم

این دمو تقریبا نمونه خوبی برای آپدیت لیست ویو با Json هست.

  http://www.uplooder.net/cgi-bin/dl.cgi?key=b68eeb56bfc5dff50797ba2730329122

نظرات

مجتبی یگانه 12 سال پیش

 پاسخ صحیح

دوست از همه تون ممنون ، حل شد

هر آیتم توی Struct باید id داشته باشه ، وقتی لیست داره به آخر میرسه  ، قطعا آخرین آیتم لود میشه دیگه ! بنابراین ما تو آداپتور مون میگیم :

public void fill(final ArrayAdapter adapter, final StructImages item,final int position){

if (item.positi GridArray.get(GridArray.size() - 1).position && !G.isLoadingNewItems) {
// Load More Items !
}
// Fill Item !
}

من با متغییری به نام isLoadingNewItems چک می کنم اگه یه بار درخواست فرستاده بودم ، دوباره نفرستم ، وقتی کار لود کردن تموم شد ، isLoadingNewItems رو دوباره false میکنیم تا دفعه ی بعد هم که به آخر رسید شرط کار کنه !

نظرات

javac 12 سال پیش
سورس کدتون مشکلی نداره و خیلی هم تمیزه :)))
مجتبی یگانه 12 سال پیش
:))) ، تقصیر من نیست ! ، درج سورس کد جدیدا یکم اذیت میکنه !
javac 12 سال پیش
نظر من رو ویرایش میکنی به نفع خودت :))) (قدرت دیکتاتوری میاره خخخخ)
Pr0gramm3r 12 سال پیش
اقا این کد اصلا درست , اول چطوری میگی چقدر لود کنه و وقتی اسکرول به اخر رسید چقدر دیگه

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