دوره زبان تخصصی برای برنامه‌نویسان (هدیه ویژه ثبت‌نام در دوره‌های متخصص) (فرصت محدود ⏰)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ فاطمه نقی لو
پاس دادن noteEntity به جای noteEntity.id
محسن موحد حل شده توسط محسن موحد

سلام خسته نباشید 

توی NoteAdapter داخل onNoteClick ما noteEntity.id رو پاس میدیم. در صفحه ویرایش برای اینکه عنوان یادداشت و توضیحات یادداشت رو پر کنیم، با اون noteId یک درخواست به دیتابیس زدیم تا currentNote رو بگیریم. سوال من اینه که آیا میشه به جای ارسال noteId بین دو صفحه، خود noteEntity ارسال بشه تا دیگه نیازی به گرفتن currentNote از دیتابیس نباشه؟

اگر جواب آره است، آیا لازمه در AddNoteViewModel متغیر currentNote رو از نوع StateFlow تعریف کنیم یا کافیه مثل isInEditMode یک variable باشه از نوع NoteEntity؟

و در نهایت اگر این روش هم روش درستی هست، روش پیشنهادی شما کدوم یکی هست؟

سلام،

بله، می‌تونی خود noteEntity رو به جای noteId بین صفحات بفرستی. (در صورت نیاز به انتقال داده‌های بزرگ، استفاده از Parcelable یا Serializable رو در نظر بگیرید)

اگه می‌خوای که currentNote در لحظه تغییر کنه و UI هم خودکار آپدیت بشه، بهتره که از StateFlow استفاده کنی(با الگوهای رایج توو اندروید هم سازگاره و انعطاف‌پذیره و ویژگی‌های دیگه‌ای هم داره مثل سازگاری با Jetpack Compose و ... ). اینطوری هر وقت currentNote تغییر کنه، UI به‌روزرسانی می‌شه و این برای تجربه کاربری بهتره. اما اگه فقط یه مقدار ثابت می‌خوای و نیازی به آپدیت لحظه‌ای نداری، همون variable ساده (از نوع NoteEntity) کافیه و کارتو راه میندازه.

 

در مورد روش پیشنهادی، روش استفاده از noteId مناسبه، چون با این کار فقط یه مقدار کوچیک (id) رد و بدل می‌شه و دیتابیس همیشه منبع اصلی داده‌ها می‌مونه. ولی اگه تعداد درخواست‌های به دیتابیس زیاده یا خیلی بهینه‌سازی می‌خوای، فرستادن کل noteEntity هم گزینه خوبیه.

در نهایت هر دو روش درسته، بستگی داره که می‌خوای چقدر سریع و ساده باشه یا چقدر به بهینه‌سازی اهمیت بدی.

بهترین پاسخ
محسن موحد ۱۳ مهر ۱۴۰۳، ۱۶:۳۱