Sort کردن ListView در onResume
با سلام، سال نو رو تبریک می گم
در آموزشها(10-01 Using ListView.mp4)(زمان 1:05:42) گفته شده برای به روزرسانی ListView وقتی از ActivityEdit.java به ActivityMain.Java بر می گردیم از دستور
adapter.notifyDataSetChanged();
استفاده می کنیم
خب حالا سوال اینجاست که وقتی مقادیر رو از دیتابیس آپدیت می کنیم و به ActivityMain.Java بر می گردیم ListView به حالت قبلی Sort شده و با مقادیر جدید Sortصورت نمی گیره
حالا سوال اینجاست که بری Sort کردن مجدد که در onCreate از دیتابیس مقادیر رو می گیره و Sort می کنه(16-02 Market Project - Local Database.mp4) (زمان 18:06)
Cursor cursor = G.db.rawQuery("SELECT * FROM tblitem ORDER BY fldSort ASC", null);
آیا
adapter.sort(comparator);
کارایی داره؟ و چطوری می تونم ازش استفاده کنم که ListView بر اساس مقادیر خاصی که در اون هست Sort بشه
آیا باید تمام کدها رو توی onResume معرفی کنم؟ این روش جواب می ده اما به نظر من یک جور کلک مرغابیه و استاندارد نیست
به نظر شما راهکار مناسبیه که تمامی کدها رو در onResume تعریف کرد و در هر بار اجرا اول محتوات رو پاک کرد و بعد مجدد از دیتابیس خوند؟
مشکل اول اینه که تراکنش با دیتابیس زیاد می شه
می دونم روز اول فروردینه اما خواهشی که دارم اینه که این مشکل رو حل کنیم تا همه با هم از نوروز لذت ببریم
سلام عزیز این مشکل ساده است فقط کافی است در کلاس edit پس از ادیت کردن و ذخیره در دیتابیس3 تا دستور اضافه کنی
اول آرایه را clear کنی دوم آرایه را بروزرسانی کنی و دستور سوم کلاس ادیت را finish کنی. مثل این
btn_save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < G.Notes.size(); i++)
{
int id = G.Notes.get(i).ID;
if (iditem == id)
{
G.EditTextToNotpad(edt_title.getText().toString().trim(), edt_body.getText().toString().trim(), id);
G.Notes.clear();
G.UPdataArrayNotepad();
G.CurrentActivity.finish();
}
}
}
});
چنانچه Database لوکال باشه
کلاً اگر Sort روی یک فیلد خاص هست بهترین راه استفاده از همون Query هست و در نهایت Cursor رو باز می کنیم و به ترتیب می خونیم و تو آرایه می ریزیم. پس نیاز به Sort مجدد نیست.
حالا شاید قرار باشه Realtime با زدن کلید هایی ستون مورد نظر برای Sort عوض شه. باز هم به نظر من منطقی تر گرفتن یک Query جدید هست چون Database به شدت از هر چیز دیگری سریعتر کار می کنه.
چنانچه Database آنلاین باشه
به صرفه نیست که برای هر Sort یکبار به سرور درخواست ارسال بشه و اطلاعات دریافت بشه. از طرفی نمیشه همه اطلاعات رو از سرور درخواست کرد. بنابراین باید کمی خواسته هامون رو محدود کنیم. در این بین برای هر Sort یکبار درخواست میفرستیم به سرور اما نتیجه برگشت داده از سرور رو یکجا Cache می کنیم ( آموزشش داده نشده اما می تونید خودتون با توجه به آموزشها فایل فرمت ها بنویسیدش ). دفعه های بعد اگر همان ستون با همان پارامتر ها در خواست Sort داشته باشه، از Cache می خونیم و هیچ نیازی به ارسال درخواست به سرور نیست. البته می تونیم بگیم اگر از لحظه ثبت این درخواست ( Cache شدن آن ) اینقدر زمان گذشته بود، فایل Cache پاک شه و دوباره درخواست از اینترنت داده بشه.
برای یک کلاس وب سرویس کامل مسابقه جدید مطرح شد، جستجو کنید «مسابقه»
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .