آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

در دیتابیس روم فقط primitive data type ها ذخیره میشن. بنابراین باید پراپرتی های entity رو به نحوی به primitive data type تبدیل کنیم تا بتونیم توی دیتابیس ذخیره کنیم. توسط TypeConverter میشه این کارو انجام داد.

مثلا در اپ ToDo فیلد priority از نوع enum تعریف شده و باید متدهایی نوشته بشه که اون رو به رشته تبدیل کنه و توی دیتابیس ذخیره کنه و همچنین متدی نوشته بشه که رشته خونده شده از دیتابیس رو به enum تبدیل کنه.

یک کلاس به صورت زیر تعریف میشه و انوتیشن TypeConverter بالای متدهای اون نشون میده که برای تبدیل استفاده میشه.

۰ نظر موافقین ۰ مخالفین ۰ ۰۴ فروردين ۰۰ ، ۲۲:۵۴
میم دال

این دیتابیس در واقع ابسترکت شده دیتابیس SQLite هست و سه قسمت اصلی داره:

 

کلاس مدل: همون الگویی که قراره توی دیتابیس ذخیره شه.

اینترفیس DAO: کوئری هایی که قراره روی دیتابیس زده بشه در اینجا تعریف میشه.

کلاس ابسترکت دیتابیس: این کلاس یک متد ابسترکت داره که خروجیش اینترفیس DAO است و از طریق فراخونی این متد میشه به کوئری مورد نظر دست یافت. (این کلاس سینگل تون بوده و خودش متد ابسترکت ذکر شده رو پیاده سازی میکنه)

۰ نظر موافقین ۰ مخالفین ۰ ۰۴ فروردين ۰۰ ، ۲۲:۴۱
میم دال

لینک های خوب برای Nvigation Component

۰ نظر موافقین ۰ مخالفین ۰ ۲۷ اسفند ۹۹ ، ۰۵:۳۴
میم دال

برای انتقال اطلاعات بین فرگمنت ها در navigation component دو روش وجود دارد:

 

1. استفاده از bundle - در این صورت bundle رو به عنوان آرگومان دوم navigate پاس می دهیم اما این روش توصیه نمی شود.

۰ نظر موافقین ۰ مخالفین ۰ ۱۳ اسفند ۹۹ ، ۱۳:۴۰
میم دال

اگر فرگمنتی گلوبال اکشن داشته باشه یعنی از هر فرگمنتی میشه به اون فرگمنت رفت. برای پیاده سازی پاپ آپ منو از طریق این روش دیگه نیازی نیست آی دی آیتم منو و فرگمنت یکی باشه و همچنین نیازی به اتریبیوت menuCategory نیست. فقط توی متد onOptionsItemSelected با توجه به آی دی آیتم کلیک شده به فرگمنت مورد نظر navigate می کنیم.

۰ نظر موافقین ۰ مخالفین ۰ ۱۳ اسفند ۹۹ ، ۱۲:۵۳
میم دال

برای اینکه منوی pop up توسط navigation component کنترل بشه باید به نکات زیر توجه کرد:

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ اسفند ۹۹ ، ۲۱:۳۲
میم دال

اگر کلاس داخلی استاتیک باشه nested class و اگر استاتیک نباشه inner class نام دارد. کلاس داخلی غیر استاتیک به تمامی فیلدها و متدهای کلاس بیرونی دسترسی دارد (یک instance از کلاس بیرونی دارد) ولی کلاس داخلی استاتیک به فیلدها و متدهای کلاس بیرونی دسترسی ندارد.

بهتره کلاس viewHolder در ریسایکلر ویو استاتیک تعریف بشه، چون اگر برای اداپتر دیگه ای مورد استفاده قرار بگیره ممکنه باعث لیک شدن مموری بشه.

 

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ اسفند ۹۹ ، ۰۵:۴۵
میم دال

NavigationUI یکی از فیچرهای Navigation conponent هست که عنوان تولبار (یا همون اکشن بار) رو با تغییر فرگمنت تغییر میده و همچنین فلش Navigate up رو اضافه میکنه (بجز فرگمنت home).

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ اسفند ۹۹ ، ۰۴:۴۵
میم دال

اگر از اکتیویتی مبدا به اکتیویتی مقصد برویم و نیاز باشد از اکتیویتی مقصد اطلاعاتی به اکتیویتی مبدا آورده شود از startActivityForResult برای رفتن به اکتیویتی مقصد استفاده می کنیم.

توی اکتیویتی مقصد یک Intent جدید تعریف میکنیم و دیتاها رو بهش متصل می کنیم و قبل از finish کردن setResult را قرار می دهیم.

۰ نظر موافقین ۰ مخالفین ۰ ۰۷ اسفند ۹۹ ، ۰۱:۵۰
میم دال

از کامپوننت ItemTouchHelper برای swipe یا move کردن آیتم های ریسایکلر ویو استفاده می شود. مثلا در کد زیر با swipe کردن به چپ یا راست، آیتم مورد نظر حذف خواهد شد. کد هایلایت شده نحوه معرفی این ویژگی به ریسایکلر ویو را نشان می دهد.

۰ نظر موافقین ۰ مخالفین ۰ ۰۷ اسفند ۹۹ ، ۰۰:۰۱
میم دال