PracticU

Content Provider - חלק 2

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Content Provider - חלק 2
מילון מושגים:
חבילה - אוסף ארוז של קוד, ספריות או קבצים המופץ כיחידה אחת ומותקן בעזרת מנהל חבילות.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.
DELETE - פקודת SQL למחיקת שורות מטבלה. גם שיטת HTTP לבקשת מחיקה של משאב בשרת.
עמודה - שדה בטבלת מסד נתונים שמחזיק ערך מסוג מסוים עבור כל שורה, למשל שם או תאריך.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.

Content Provider - חלק 2
אחרי שנבנה Content Provider שחושף את טבלת המוצרים, כאן בונים אפליקציה נפרדת שקוראת את הנתונים שלו ומציגה אותם ב-TextView.
השלבים העיקריים
1. אפליקציה עם חבילה אחרת: האפליקציה הצורכת חייבת להיות עם שם package שונה. אם השם היה זהה, ההרצה הייתה דורסת את האפליקציה הקודמת ולא היו רצות שתיהן על אותו מכשיר.
2. הגדרת ה-URI: משתמשים ב-Uri.parse עם content:// ואחריו ה-authority, כלומר שם החבילה ושם המחלקה ProductsContentProvider. אפשר להוסיף /products או ID, אבל הספק שנבנה לא מתייחס לסיומת הזאת.
3. ContentResolver: קוראים ל-getContentResolver(), שמאתר במכשיר את הספק לפי ה-URI. עליו יש את query, insert, update ו-delete, ובדוגמה משתמשים רק ב-query.
4. פרמטרי query: projection (אילו עמודות), selection (חלק ה-WHERE), selectionArgs ו-sort order. הספק לא תומך בהם כרגע, ולכן מעבירים null.
5. בדיקת null: אם הקורסור חוזר null (ספק לא קיים או URI שגוי), מציגים Toast עם "No such content provider" ויוצאים עם return.
6. קריאת הקורסור: מקבלים את האינדקסים עם getColumnIndex לעמודות _id, name ו-price, רצים בלולאה עם moveToNext, קוראים עם getInt, getString ו-getDouble, ומוסיפים לטקסט עם append ועם ירידת שורה.
אפשר עכשיו להציג באפליקציה אחת נתונים שנחשפים מאפליקציה אחרת דרך Content Provider.
השיעור הבא בקורס: Content Provider - חלק 3

פרקי ההרצאה: Content Provider - חלק 2

  1. 00:00

    אפליקציה חדשה לצריכת המידע

  2. 00:39

    Package Name שונה לאפליקציה

  3. 01:15

    הגדרת ה-URI של ה-Content Provider

  4. 02:36

    קבלת אובייקט ContentResolver

  5. 03:12

    קריאה ל-query והפרמטרים שלה

  6. 04:09

    קבלת Cursor ובדיקת null

תמלול ההרצאה: Content Provider - חלק 2

הטקסט המלא של הדקות הראשונות בהרצאה «Content Provider - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:00

    אחרי שבסרטון הקודם בנינו Content Provider שחושף את טבלת המוצרים, אנחנו הולכים בסרטון הזה לצרוך את המידע ולהציג אותו.

  2. 00:11

    יש לנו כאן Layout, יש לנו לחצן שבדחיצה עליו אנחנו רוצים לגשת ולהביא את המידע, יש לנו כאן Text View שבו אנחנו הולכים להציג את המידע, ושימו לב רק שאנחנו נמצאים בכלל באפליקציה אחרת וחדשה לגמרי.

  3. 00:28

    האפליקציה הקודמת נמצאת כאן במכשיר, אנחנו יכולים לראות אותה, אבל אנחנו נמצאים באפליקציה חדשה והפאקג' חייב להיות פאקג' אחר, שימו לב שהוא נקרא com.practic.u מפני שאם זה היה אותו הפאקג' בדיוק אז לא היינו יכולים ששתי האפליקציות האלה ירוצו על אותו המכשיר אלא בהרצה של האפליקציה הזאת היינו דורסים את האפליקציה הקודמת.

  4. 00:51

    אז יש לנו פה איזשהו צ'יינג' הפאקג' name הוא אחר ואנחנו עכשיו יכולים להריץ את האפליקציה הזאת, ללחוץ על הלחצן ולצרוך את המידע של ה-content provider של האפליקציה הקודמת שבנינו.

  5. 01:05

    אז מה אנחנו צריכים לעשות בלחצן? הדבר הראשון שאנחנו צריכים לעשות זה להגדיר את ה-URI. ה-URI, כמו שראינו, מגדיר את המיקום של ה-content, איפה ה-content בדיוק נמצא ועל ידי איזו מחרוזת הוא מתואר במכשיר.

  6. 01:21

    אז בואו נבצע בדיוק את התיאור שלו, זה יהיה URI Parse, יש לנו פה content.com.practicu. והיה לנו את השם של המחלקה שהייתה product.content.provider.

  7. 01:42

    כל זה זה היה השם של ה-content.provider. אחרי שהגדרנו את המיקום של ה-content ואני מזכיר לכם שזה בעצם ה- prefix זה ה-authority, כל זה האוטוריטי שמתארת את ה-content provider עצמו.

  8. 02:02

    יכלנו להוסיף כאן /products, זה גם היה בסדר, אבל כרגע ה-content provider לא מתעסק עם הסיומת הזאת של ה-products, ואם היינו רוצים איזשהו מוצר ספציפי, נניח מוצר מספר 5, אז היינו רושמים פה את ה-ID שלו, אבל שוב ה-content provider שבנינו לא מתייחס לדברים האלה.

  9. 02:22

    רק תזכורת שאם הוא כן היה מתייחס אליהם, אז ככה היינו יכולים להגדיר את זה. ומה שאנחנו רוצים לעשות זה לבנות אובייקט מטיפוס content resolver שהתפקיד שלו זה לאתר בתוך המכשיר את ה-content provider המתאים לפי ה-URI.

  10. 02:45

    אז בואו בעצם נבנה אובייקט ואנחנו לא יוצרים אובייקט חדש אנחנו קוראים לפונקציה שנקראת get content resolver והנה יש לנו את האובייקט. ומפה אנחנו פשוט יכולים לקרוא ל-content resolver, והנה יש לנו את הפונקציה query, הנה יש לנו את הפונקציה insert אם אנחנו רוצים, הנה יש לנו את הפונקציה update,

  11. 03:10

    הנה יש לנו את הפונקציה delete, וכך אנחנו יכולים לקרוא לכל אחת מארבעת הפונקציות שבנינו ב-content provider. אנחנו בדוגמה הזאת רוצים רק לקרוא ל-query, לראות שהכל עובד כמו שצריך, אנחנו נותנים לה את ה-URI, ואם יש לנו את הפרמטרים הנוספים, שהפונקציה מצפה לקבל, הפרוג'קשן זה אומר אילו

  12. 03:30

    עמודות אנחנו רוצים להחזיר, אולי אנחנו לא רוצים את כל העמודות של הטבלה אלא רק חלק, האם יש לנו סלקשן מסוים, כלומר אזור ה-Ware שבו אנחנו רוצים להביא את המידע, נניח רק אם המוצרים הם יקרים יותר מ-100, איזה פרמטרים יש ל-Ware, לדוגמה אם היינו רושמים שהמוצרים נניח פרייס גדול מסימן שאלה, אז כאן היינו רושמים את המאה עבור סימן השאלה

  13. 03:59

    והאם אנחנו רוצים למיין את זה לפי איזושהי עמודה. כל הסיפור הזה כרגע לא נתמך באפליקציות של ה-content provider שבנינו ולכן אנחנו אין לנו מה להתעסק עם זה כרגע אז אנחנו פשוט נתאר נאלים.

  14. 04:13

    הפונקציה הזאת מחזירה לנו קורסור אז הנה יש לנו פה את הקורסור ואנחנו יודעים שהוא מחזיר לנו מוצרים אז בואו נקרא לזה product קורסור וקיבלנו בחזרה את הקורסור שמכיל את כל המוצרים עכשיו יכול להיות שני מקרים יכול להיות שמאיזושהי סיבה הדאטה בייס יחזיר לנו נעל ויכול להיות שטעינו ולא לא תיארנו קונטנט פרוביידר אמיתי

  15. 04:45

    שקיים במכשיר נניח טעינו כאן ונתנו איזה קונטנט פרוביידר אחר שלא קיים או טעינו בפאקג' במידה ויש איזושהי שגיאה כזאת, אז מוחזר לנו נעל עבור הקורסור.

  16. 04:58

    אז בואו נבצע פה איזושהי בדיקה, האם פרודקט קורסור שווה לנעל.

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: Content Provider - חלק 1

ההרצאה הבאה: Content Provider - חלק 3

הרצאות קשורות מקורסים אחרים

  • הסבר על Provider ב-Flutter
  • הגדרת AWS provider - פרויקט NodeJS

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון