
startActivityForResult. בחזרה, ב-onActivityResult, נבדק קוד הבקשה ותוצאת ה-Result, והמוצר החדש נוסף למערך המקומי ומרפרש את הרשימה והכותרת.הטקסט המלא של הדקות הראשונות בהרצאה «חיבור למסד נתונים SQLite - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בסדרת הסרטונים הבאים אנחנו הולכים לעבוד עם מסד הנתונים sqlite ואנחנו הולכים לראות איך אנחנו יכולים לבצע insert, update, delete וכמובן select על מידע.
אנחנו הולכים לעשות את זה על ידי איזושהי אפליקציה דומה לאפליקציה שעבדנו עליה כשלמדנו על קבצים, שמנהלת לנו מוצרים.
בסרטון הזה אנחנו הולכים רק לראות איך האפליקציה הזאת בנויה, כאשר כרגע היא לא מתעסקת בכלל עם שום מסד נתונים וגם לא עם קבצים ועליה אנחנו הולכים להוסיף קוד כך שישמור את כל המידע לדאטאבייס.
אז בואו נעבור ונראה מה יש לנו באפליקציה. ראשית יש לנו את המיין אקטיביטי שמה שיש במיין אקטיביטי זה איזושהי כותרת לגבי כמה מוצרים יש לנו ורשימת המוצרים שמוצגים על ידי רכיב list view.
כל אחד מהמוצרים מתואר על ידי layout שמכיל קוד מוצר, שם מוצר, מחיר ושני לחצנים שמאפשרים לעדכן את המוצר ולמחוק את המוצר.
כל אחד מאלה זה בעצם מופיע לגבי כל אחד מהמוצרים ברשימה שלנו. לצורך הוספת מוצר יש לנו layout ו-activity שמאפשרים להוסיף מוצר חדש.
כאשר אני מוסיף מוצר אז יש לי רק את השם שלו ואת המחיר שלו. אנחנו רוצים שהקוד שלו יתווסף אוטומטית על ידי ה-database. יש לנו פה לחצן לביטול ולחצן להוספה.
כאשר אנחנו רוצים לעדכן מוצר יש לנו layout המאפשר לבצע update, כמובן שייך ל-activity של עדכון מוצר, ואנחנו רוצים להציג פה את המידע הקודם לגבי המוצר ולאפשר למשתמש לערוך כמובן רק את השם ואת המחיר.
שוב יש לנו פה לחצן cancel או לחצן update. הקוד שקיים בתוך האקטיביטי של הוספת מוצר add product activity ופשוט מאוד לחצן בוא נתחיל עם cancel מבצע finish ולכן לא מחזיר שום דבר ל-main activity והלחצן שמבצע את ההוספה לוקח את המידע מהתיבות, מוסיף אותו ל-object product ומחזיר אותו ל-main activity.
יש לנו כמובן מחלקה שמתארת מוצר אחד, למוצר יש קוד, יש שם ויש מחיר. בנוסף כרגע בגלל שאין לנו דאטאבייס וזה נלקח מאחת הדוגמאות הקודמות יש לנו משהו שנקרא ID Generator זאת אומרת כל מוצר שאנחנו מוסיפים אז המערכת מייצרת לו איזשהו ID. כמובן שאם אנחנו משתמשים עם דאטאבייס התכונה הזאת תהיה בילד אין בתוך הדאטאבייס
על ידי עמודה שתוגדר כ-Auto Increment. מה אנחנו עושים ב-Update Product Activity? Update Product Activity קודם כל היא מקבלת ממי שקורא לה, כלומר מהמיין אקטיביטי את המוצר שאנחנו רוצים לעדכן.
שמה את המידע שלו על תיבות הקלט שהמשתמש יכול לעדכן. המשתמש יכול לבטל את הפעולה ולא קורה דבר, והוא יכול ללחוץ על לחצן Update, ואז אנחנו לוקחים את הנתונים החדשים, מוסיפים אותם לאובייקט הפרודקט ומחזירים את אובייקט הפרודקט בחזרה.
המחלקה MyApp מכילה קונטקסט כללי ברמת האפליקציה, שאנחנו יכולים להשתמש איתו בכל מיני מקומות. קיימת לנו המחלקה Product Adapter שהתפקיד שלה זה סך הכל להכניס את המידע לגבי כל אחד מהמוצרים והמידע הולך להיכנס ל-Item Product Layout מה שראינו כאן.
אז Product Adapter מה שהיא עושה זה פשוט מאתרת את רכיבי ה-UI של ה-Layout כמובן קודם כל מנפחת את ה-Layout הזה, מאתרת את ה-id, name ו-price ומכניסה לתוכם את הערכים של המוצר שאותו אנחנו הולכים להציג.
בנוסף יש לנו שני לחצנים, אז מה שקורה באדפטר הזה זה שיש לנו כאן איזשהו אינטרפייס שמכיל שתי פונקציות update product ו- delete product.
כל אחת מהן מקבלת את המיקום של המוצר ברשימה שאנחנו רואים, וברגע שלוחצים על הלחצן Update כל מה שאנחנו עושים זה פשוט קוראים לו פונקציה של ה-interface Update Product.
כאשר היוזר לוחץ על הלחצן Delete אנחנו קוראים לו פונקציה Delete Product. שני הלחצנים האלה מופיעים ברשימה ליד כל אחד מהמוצרים ולכן אנחנו הולכים לקבל את הלחיצות האלה ב-Main Activity ולדעת בדיוק מה המיקום של המוצר שאותו אנחנו רוצים לערוך או למחוק ככה אנחנו יכולים לערוך או למחוק מוצרים ספציפיים שאנחנו רואים ברשימה
הדבר האחרון שנשאר לנו זה המיין אקטיביטי במיין אקטיביטי יש לנו קודם כל שני קבועים עבור הוספת מוצר ועבור עדכון מוצר יש לנו אריי ליסט שמחזיק את כל המוצרים יש לנו את הפרודקט אדפטר שראינו עכשיו יש לנו את הליסט ויו ואת הכותרת טקסט ויו קאונט.
כאן אנחנו מאתרים את רכיבי ה-UI, הליסט ויו והכותרת, יוצרים אובייקט חדש מה-raylist שהוא כמובן בהתחלה ריק לגמרי, יוצרים אובייקט מהאדפטר, שימו לב שהוא מבקש מאיתנו את הקונטקסט, את הרשימה ואיזה אובייקט מממש את האינטרפייס שבנינו ואנחנו רואים שהמיין אקטיביטי מממשת את האינטרפייס.
לאחר מכן אנחנו מקשרים את האדפטר עם הליסט ומציגים את הכותרת על ידי פונקציה שזה התפקיד שלה להציג בכותרת כמה מוצרים כרגע קיימים.
בואו רגע נסתכל על הפונקציה הזאת, היא נמצאת פה למטה והיא אומרת דבר כזה: אני בודקת רק את ה-ArrayList. אם אין לי בכלל מוצרים ב-ArrayList אני מציגה לכם כותרת No Products.
אם יש לי מוצר אחד ויחיד אני אציג לכם one product בכותרת. אם יש יותר אני אציג לכם count products, לדוגמה שלושה מוצרים. זה בעצם פונקציה שאנחנו קוראים לה מכל מיני מקומות בכדי להציג כמה מוצרים יש בכל רגע.
יש לנו כאן תפריט שבתפריט יש add product ו-exit. דרך התפריט המשתמש יכול להוסיף מוצר. בפונקציה הזאת אנחנו בעצם מציגים את התפריט, ובקוד של הקליק של התפריט של menu item add product אנחנו רוצים רק ליצור אובייקט אינטנט בשביל להציג את האקטיביטי של הוספת מוצר ומפעילים את האקטיביטי הזאת כמובן על ידי start activity for result בכדי לקבל בחזרה את הפרטים
של המוצר החדש. מה אנחנו עושים עם המוצר החדש? את זה אנחנו יכולים לראות בפונקציה onActivityResult. בפונקציה אנחנו בודקים האם בעצם ה-request code זה request code add product, ושימו לב שזה ה-request code ששלחנו כאשר היוזר לחץ על התפריט להוספת מוצר, request code add product.
אז אם זה המצב והכל נגמר כמו שצריך,