View Full Version : مشکل لود شدن لیست ویو با حجم داده زیاد
mortex3000
جمعه 22 بهمن 1395, 16:18 عصر
من با استفاده از پروژه لیست ویو استاد یه لیست ویو درست کردم. قراره با باز شدن اکتیویتی در onCreate لیست ویو تمام پیامک های کاربران را نمایش دهد. اما برای پیامک های خیلی زیاد لیست ویو پس از تاخیر چند ثانیه ای پر می شود و در این زمان نیز برنامه فریز می شود و پس از آن داده ها لود می شود.
لطفا کمک کنید که چطور باید لیست ویو پر شود که این مشکل پیش نیاید.
این هم کد:
adapter = new AdapterNote(SampleApplication.payamak);
lstContent.setAdapter(adapter);
getSMSContacts(this.getContentResolver());
public void getSMSContacts(ContentResolver cr) {
Uri inboxUri = Uri.parse("content://sms/inbox");
Cursor smsha = cr.query(inboxUri, null, null, null, null);
String body = null;
String number = null;
String date = null;
String pid = null;
SampleApplication.payamak.clear();
while (smsha.moveToNext()) {
try {
body = smsha.getString(smsha.getColumnIndexOrThrow("body")).toString();
date = smsha.getString(smsha.getColumnIndexOrThrow("date")).toString();
number = smsha.getString(smsha.getColumnIndexOrThrow("address")).toString();
pid = getContactName(getApplicationContext(), number);
////////////////////////////
StructNote note = new StructNote();
note.title = number;
note.description = body;
note.name = pid;
note.date = mydate;
note.done = false;
////////////////////////////
SampleApplication.notes.add(note);
}
catch (Exception e) {}
}
smsha.close();
}
suraty
شنبه 23 بهمن 1395, 07:51 صبح
سلام، شاید استفاده از RecyclerView نتیجه مقبول تری ارائه دهد.
RecyclerView یک ویو جدید معرفی شده توسط گوگل می باشد. که جایگزین مناسبی برای ListView و GridView می باشد.
از مزایای آن می توان به:
۱- سرعت بالای لود شدن آیتم ها نسبت به لیست ویو
۲- اشغال مقدار رم کمتر از گوشی کاربر نسبت به لیست ویو
۳- قابلیت نمایش در هر دو حالت list و grid
۴- دارای انیمیشن های پیش فرض برای اضافه شدن یا حذف شدن آیتم ها
(منبع سایت اسفندونه)
mortex3000
شنبه 23 بهمن 1395, 09:28 صبح
سلام، شاید استفاده از RecyclerView نتیجه مقبول تری ارائه دهد.
RecyclerView یک ویو جدید معرفی شده توسط گوگل می باشد. که جایگزین مناسبی برای ListView و GridView می باشد.
از مزایای آن می توان به:
۱- سرعت بالای لود شدن آیتم ها نسبت به لیست ویو
۲- اشغال مقدار رم کمتر از گوشی کاربر نسبت به لیست ویو
۳- قابلیت نمایش در هر دو حالت list و grid
۴- دارای انیمیشن های پیش فرض برای اضافه شدن یا حذف شدن آیتم ها
(منبع سایت اسفندونه)
به نظر شما مشکل از لیست ویو هست؟ من فکر نکنم استفاده از RecyclerView تاثیر داشته باشه، چون بازم باید برای دریافت تمام پیامکهای گوشی منتظر بمونه، اگه بخوام لیستم 20 تا 20 تا پر بشه بهتر جواب نمیده؟ یا استفاده از ترد؟ لطفا راهنمایی کنید که چطور میتونم این کارها رو بکنم
godofphp
شنبه 23 بهمن 1395, 11:46 صبح
سلام، شاید استفاده از RecyclerView نتیجه مقبول تری ارائه دهد.
RecyclerView یک ویو جدید معرفی شده توسط گوگل می باشد. که جایگزین مناسبی برای ListView و GridView می باشد.
از مزایای آن می توان به:
۱- سرعت بالای لود شدن آیتم ها نسبت به لیست ویو
۲- اشغال مقدار رم کمتر از گوشی کاربر نسبت به لیست ویو
۳- قابلیت نمایش در هر دو حالت list و grid
۴- دارای انیمیشن های پیش فرض برای اضافه شدن یا حذف شدن آیتم ها
(منبع سایت اسفندونه)
دوست عزیز مردم رو گمراه نکن وقتی چیزی نمیدونید
لیست ویو و گرید ویو هرگز منسوخ اعلام نشده اند و هیچ جایگزینی هم براشون از طرف اندروید معرفی نشده
هر کدوم کاربرد خاص خودشون رو دارند
من با استفاده از پروژه لیست ویو استاد یه لیست ویو درست کردم. قراره با باز شدن اکتیویتی در onCreate لیست ویو تمام پیامک های کاربران را نمایش دهد. اما برای پیامک های خیلی زیاد لیست ویو پس از تاخیر چند ثانیه ای پر می شود و در این زمان نیز برنامه فریز می شود و پس از آن داده ها لود می شود.
بعد از اینکه ایتم های لیست ویو بطور کامل لود میشه کرش میکنه ؟ یا در حین پرکردن محتویات لیست ویو ؟ logCat رو بفرستید و خطایی که رخ میده رو دقیق بنویسید دلایل زیادی میتونه برای کرش کردن برنامه باشه
و اینکه در مواردی که لیست ویو داده های زیادی داره عمل صفحه بندی انجام میشه و مثلا تعداد ایتم ها بیشتر از 20 تا بود صفحه 2 3 4 ....
که هر صفحه 20 ایتم نمایش بده
mortex3000
شنبه 23 بهمن 1395, 13:17 عصر
دوست عزیز مردم رو گمراه نکن وقتی چیزی نمیدونید
لیست ویو و گرید ویو هرگز منسوخ اعلام نشده اند و هیچ جایگزینی هم براشون از طرف اندروید معرفی نشده
هر کدوم کاربرد خاص خودشون رو دارند
بعد از اینکه ایتم های لیست ویو بطور کامل لود میشه کرش میکنه ؟ یا در حین پرکردن محتویات لیست ویو ؟ logCat رو بفرستید و خطایی که رخ میده رو دقیق بنویسید دلایل زیادی میتونه برای کرش کردن برنامه باشه
و اینکه در مواردی که لیست ویو داده های زیادی داره عمل صفحه بندی انجام میشه و مثلا تعداد ایتم ها بیشتر از 20 تا بود صفحه 2 3 4 ....
که هر صفحه 20 ایتم نمایش بده
برنامه کرش نمیکنه و هیچ خطایی نمیده فقط برنامه برای چند لحظه که بتونه تمام پیامکها رو بخونه و در لیست ویو قرار یده متوقف میشه و بعد اونها رو نمایش میده، فکر میکنید استفاده از recycler view به همراه صفحه بندی میتونه کمک باشه؟
godofphp
شنبه 23 بهمن 1395, 19:56 عصر
برنامه کرش نمیکنه و هیچ خطایی نمیده فقط برنامه برای چند لحظه که بتونه تمام پیامکها رو بخونه و در لیست ویو قرار یده متوقف میشه و بعد اونها رو نمایش میده، فکر میکنید استفاده از recycler view به همراه صفحه بندی میتونه کمک باشه؟
اینکه ListView استفاده کنی یا RecyclerView با خودته ولی اگه خاستی این مشکل لیست ویو رو به چند طریق میتونی حل کنی
من فکر میکردم برنامتون کرش میکنه و اگه مشکل کرش نداره میتونید به راحتی سرعت لود رو زیاد کنید مثلا طوری باشه که اول کمی از ایتم ها لود بشه و وقتی کاربر اسکرول کرد پایین دوباره یکم دیگه و همینطور هر بار که به اخر ListView رسید باز لودینگ بیاد و مثلا ده ایتم جدید لود بشه اینطوری دیگه سرعت بالا اومدن لیست ویو کم نمیشه
اینجا رو ببین
http://www.androidhive.info/2012/03/android-listview-with-load-more-button/
mortex3000
شنبه 23 بهمن 1395, 23:42 عصر
اینکه ListView استفاده کنی یا RecyclerView با خودته ولی اگه خاستی این مشکل لیست ویو رو به چند طریق میتونی حل کنی
من فکر میکردم برنامتون کرش میکنه و اگه مشکل کرش نداره میتونید به راحتی سرعت لود رو زیاد کنید مثلا طوری باشه که اول کمی از ایتم ها لود بشه و وقتی کاربر اسکرول کرد پایین دوباره یکم دیگه و همینطور هر بار که به اخر ListView رسید باز لودینگ بیاد و مثلا ده ایتم جدید لود بشه اینطوری دیگه سرعت بالا اومدن لیست ویو کم نمیشه
اینجا رو ببین
http://www.androidhive.info/2012/03/android-listview-with-load-more-button/
godofphp ممنون از راهنماییت ولی میشه مثال بهتری بزنی که مرتبط با کد من بشه، لینکی که دادی کمی گیج کننده است ممنون
godofphp
دوشنبه 25 بهمن 1395, 21:32 عصر
godofphp ممنون از راهنماییت ولی میشه مثال بهتری بزنی که مرتبط با کد من بشه، لینکی که دادی کمی گیج کننده است ممنون
لینکی که دادم به همین شیوه هست که توضیح دادم قبلتر
یک دکمه زیر لیست ویو گذاشته میشه و یه تعداد ایتم رو پر میکنه مثلا ده تا
بعد اینکه ده تا پر شد اگه کاربر روی Load more کلیک کرد ده تا دیگه پر میشه و همینطوری تا اخر
شما میتونید بدون دکمه هم هیمنکار رو بکنید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.