+1 امتیاز
قبل در برنامه نویسی توسط (59 امتیاز)
ویرایش شده قبل توسط

سلام در تابع سازنده کلاس data base helper م از ورودی cursor factory میخاد . دقیقا این cursor factory چیه؟ و چه مواقعی به درد میخوره اگر امکانش هست مثال هم بزنید چون تا به حال ندیدم در جایی بهش مقدار غیر null بدن!

1 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)

وقتی می خواهید یک کلاس SQLiteHelper بسازید، کلاس شما باید از کلاس SQLiteOpenHelper ارث ببرد و در constructor خود constructor کلاس پدر را با کلمه کلیدی super فراخوانی کند:

    public MySQLiteHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

امضای constructor کلاس پدر بصورت زیر است:

public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version)

همانطور که مشاهده می کنید بعنوان پارامتر سوم باید یک شئ از کلاس CursorFactory به constructor کلاس پدر ارسال کنیم. CursorFactory مشخص کننده رفتار SQLiteCursor است و معمولا ما مقدار null را برای کلاس پدر ارسال می کنیم که مشخص می کند که ما می خواهیم از standard SQLiteCursor استفاده کنیم. در صورتی که بخواهیم از SQLiteCursor که رفتار خاصی دارد و توسط خود ما پیاده سازی شده است استفاده کنیم باید یک کلاس factory بنویسیم که از کلاس Cursor ارث ببرد و سپس یک شئ از CursorFactory پیاده سازی شده توسط خودمان را به constructor کلاس پدر ارسال کنیم.

نکته: CursorFactory عملیات های لازم بر روی نتایج query های اجرا شده را برای ما انجام می دهد و معمولا پیاده سازی استاندارد آن برای تمامی کار ها کفایت می کند و پیاده سازی یک CursorFactory شخصی در مواقعی کاربرد دارد که می خواهیم عملیات های اضافه ای بر روی نتایج query انجام دهیم.

سوالات مشابه

+1 امتیاز
2 پاسخ 2.0هزار بازدید
0 امتیاز
2 پاسخ 494 بازدید
+1 امتیاز
4 پاسخ 1.4هزار بازدید
0 امتیاز
1 پاسخ 1.2هزار بازدید
...