ریسایکلر ویو خودش لیسنر نداره و بنابراین خودمون باس بنویسیم واسش!
یکی از فرق های ریسایکلر ویو با لیست ویو همینه که لیست ویو متدهای از پیش نوشته شده داره (مثل آیتم لیسنر) ولی ریسایکلر ویو نداره. اما ریسایکلر ویو انعطاف پذیری بیشتری داره و امکان کاستومایز شدنش خیلی زیاده.
کلا به سه روش میشه توی اندروید دستورات sql رو اجرا کرد:
query: که متعلق به API اندروید هست.
execSql: که دستورات SQL ای میگیره و خروجی نداره. بنابراین برای select نمیشه از این استفاده کرد.
rowQuery: اینم دستورات SQL ای میگیره ولی خروجی داره. بنابراین برای select میشه ازش استفاده کرد.
و تو چه میدانی دیتابیس چیست :)) یک هفته ست درگیرم که سنگل تونش کنم!
کلاسی که از SQLiteOpenHelper اکستند میشه، مسئول ساخت دیتابیس هست.
برای استفاده از کلاس asyncTask باید یه کلاس جدید بنویسیم و از asyncTask اکستندش کنیم. asyncTask یک کلاس ابسترکت هست و باید حتما متد doInBackground پیاده سازی بشه.
کلاس asyncTask سه تا پارامتر به عنوان جنریک میگیره که مربوط به متد doInBackground هستن که در ادامه بیشتر توضیح میدم.
در اینجا از کلاس asyncTask استفاده میکنیم که یک متد doInBackground داره. یعنی عملیات رو توی یه ترد دیگه انجام میده. بنابراین نیازی به ساخت ترد جدید برای اتصال به اینترنت و handler وجود نداره. کلاس asyncTask رو توی یک پست جداگونه توضیح میدم.
برای استفاده از این کتابخونه، یک کلاس جداگونه نوشتم که یه متد استاتیک داره که اتصال رو برقرار میکنه. فقط باید توی ورودی این متد آدرس رو بدیم.
propertyها هدر هستن که ست میشن ولی فکر کنم زیاد مهم نباشن! حالا نوشتمشون!
این کتابخونه توی اندروید دپریکیت شده. ولی میشه از طریق اضافه کردن کد زیر در گریدل ازش استفاده کرد.
تگ include برای اینه که یک ویو تکراری رو توی لیوت های مختلف استفاده کنیم.
مثلا توی بازی XO صفحه بازی رو توی لیوت های مختلف include کردم.
تگ marge برای اینه که روت لیوتی که قراره include شه توی لیوت main قرار نگیره. چون این لیوت اضافه هست و باعث کندی render شدن لایه xml میشه.