listview - 15 קרפ · listview - ב את לכ לעש תונוכתה תא ליכמש java class...

27
ListView - 15 פרקlayout יורכב מאותוListView הוא אובייקט המורכב מתאים זהים. כל תא בListView בסיסי::(כולל המספר) נוכל לראות בדוגמה שלנו שכל תא מורכב מתמונה ושלושה טקסטים נעקוב אחר השלבים הבאים:ListView בשביל לבנות זה לכל שורה.layout נדחוף ונעצב אותו כרצוננו. בהמשךlayout .ניצור1 ListView - שמכיל את התכונות שעל כל תא בjava class .ניצור2 ArrayAdapter<class > שיורש מMyAdapter משלנו בשם כלשהו לדוגמאclass adapter .ניצור3 constructor .נממש4 getView .נממש את הפונקציה5 ונוסיף לו נתונים.ArrayList לדוגמהMainActivity - ב-.ניצור מבנה נתונים בהתאם לרצוננו ב6 ונעביר לו את מבנה הנתונים.ArrayAdapter .ניצור מופע של7 כפרמטרArrayAdapter- ונעביר לה את הListView- של הsetAdapter .נפעיל את הפונקציה8 נריץCopyright © 2019 appSchool. Powered by appSchool.co.il 1

Upload: others

Post on 08-Oct-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

ListView - 15 פרק layout יורכב מאותו ListView הוא אובייקט המורכב מתאים זהים. כל תא ב ListView

בסיסי:נוכל לראות בדוגמה שלנו שכל תא מורכב מתמונה ושלושה טקסטים (כולל המספר):

בשביל לבנות ListView נעקוב אחר השלבים הבאים:

1.ניצור layout ונעצב אותו כרצוננו. בהמשך נדחוף layout זה לכל שורה.

ListView - שמכיל את התכונות שעל כל תא ב java class 2.ניצור

ArrayAdapter<class > שיורש מ MyAdapter משלנו בשם כלשהו לדוגמא class adapter 3.ניצור

constructor 4.נממש

getView 5.נממש את הפונקציה

6.ניצור מבנה נתונים בהתאם לרצוננו ב- ב - MainActivity לדוגמה ArrayList ונוסיף לו נתונים.

7.ניצור מופע של ArrayAdapter ונעביר לו את מבנה הנתונים.

8.נפעיל את הפונקציה setAdapter של ה-ListView ונעביר לה את ה-ArrayAdapter כפרמטר

נריץ

Copyright © 2019 appSchool. Powered by appSchool.co.il

1

Page 2: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

ListView הוא אובייקט חשוב מאוד וניתן לראות אותו כמעט בכל אתר ואפליקציה.

לדוגמה: כשאנחנו נמצאים באימייל אנחנו רואים ListView של כל המיילים שלנו.

האפליקציה שנבנה תיראה כך:

כל custom cell (תא) ב ListView יראה כך:

נוכל לערוך כל custom cell ולמחוק תאים שאנחנו לא רוצים.

:layout שלב 1 - עריכת

Copyright © 2019 appSchool. Powered by appSchool.co.il

2

Page 3: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

נעצב Layout שיהיה תבנית לכל שורה.

.custom_layout וניתן לו שם כלשהו. לדוגמה Layout ניצור Layout נעמוד על תיקיית

ה- layout בדוגמה שלנו יכיל תמונה, 2 שדות טקסט לכותרת המוצר ומחיר המוצר.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" >

<ImageView android:layout_width="50dp" android:layout_height="50dp" android:id="@+id/ivProduct" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tvTitle" android:textSize="20dp" android:text="title" android:layout_marginTop="5dp" android:layout_marginLeft="10dp" android:textColor="#0e82f5" />

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"

Copyright © 2019 appSchool. Powered by appSchool.co.il

3

Page 4: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

android:id="@+id/tvSubTitle" android:textSize="20dp" android:text="subtitle" android:layout_marginTop="5dp" android:layout_marginLeft="10dp" android:textColor="#6ef50e" /> </LinearLayout> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tvPrice" android:textColor="#dc130c" android:textSize="30sp" android:text="50$" android:gravity="right" android:layout_marginRight="20dp" android:layout_marginTop="20dp" />

</LinearLayout>

Copyright © 2019 appSchool. Powered by appSchool.co.il

4

Page 5: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

שלב 2 - בניית class שמתאר את התא.

Copyright © 2019 appSchool. Powered by appSchool.co.il

5

Page 6: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

Copyright © 2019 appSchool. Powered by appSchool.co.il

6

Page 7: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

ArrayAdapter שלב 3 - בניית .ArrayAdapter שיורש מ ClassAdapter בשלב הזה נבנה

?Adapter מה תפקיד ה

תפקיד ה Adapter הוא הוא לקחת רשימה של Toy (הקלאס שמתאר כל תא) ולשים אותם לתוך ה ListView, כלומר לשים אותם תא אחרי תא במסודר.

Copyright © 2019 appSchool. Powered by appSchool.co.il

7

Page 8: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

:Toy גנרי של ArrayAdapter נבנה קודם כל קלאס שיורש מ public class ToyAdapter extends ArrayAdapter<Toy> {

לקלאס יהיו שתי תכונות:

נבנה גם constructor מתאים:

:Adapter של ה getView נממש את הפונקציה ברגע שנבנה את ה ListView הפונקציה הזו תרוץ n פעמים (n גודל הרשימה)

Copyright © 2019 appSchool. Powered by appSchool.co.il

8

Page 9: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

.

MainActivity - 4 שלב

Copyright © 2019 appSchool. Powered by appSchool.co.il

9

Page 10: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

.ListView בשלב הזה נראה איך להשתמש בכל הקלאסים שבנינו ולחבר אותם ל :ListView נבנה XML בקובץ ה

Copyright © 2019 appSchool. Powered by appSchool.co.il

10

Page 11: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

נוסיף תמונות מהמחשב לאפליקציה:

:drawable תוכלו לגרור את התמונות לתיקיה

ניצור bitmap לכל תמונה:

Copyright © 2019 appSchool. Powered by appSchool.co.il

11

Page 12: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

ניצור מופעים של Toy שנוסיף בהמשך לרשימה:

ניצר רשימה מסוג Toy ונוסיף את המופעים של Toy שיצרנו לרשימה:

ניצור Adapter וניתן לו את הרשימה:

Copyright © 2019 appSchool. Powered by appSchool.co.il

12

Page 13: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

תוכלו להריץ עכשיו את האפליקציה ולראות את ה ListView שבניתם :)

:ListView סיכום כל השלבים שעשינו לבניית

Copyright © 2019 appSchool. Powered by appSchool.co.il

13

Page 14: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

.ListView ב (custom cell) שיהיה העיצוב לכל תא custom_layout 1.בנינו 2. בנינו class Toy שישמור את הערכים שבהמשך נכניס לכל תא.

3. בנינו ToyAdapter שמקבל שתי תכונות: Context שהוא הפניה לאקטיביטי שבו ניצור.objects בשם Toy ורשימה של ListView את ה

4. ה ToyAdapter יירש מ ArrayAdapter ויממש את הפונקציה:● getView

: getView 5. בפונקציה ●.Inflater לאקטיביטי על מנת להשתמש ב context המרנו את ה ●.View של כל תא ל XML שבנינו לכל תא וכך הפכנו את ה XML ניפחנו" את ה" נתנו הפניות לכל האובייקטים שעל כל תא.● נתנו את הערכים המתאימים לכל אובייקט בתא.●

:(ListView האקטיביטי שבו יצרנו את ה) MainActivity 6. ב העלנו תמונות●●Toy יצרנו מופעים של הוספנו את המופעים לרשימה●●MainActivity כהפניה ל context את הרשימה ו Adapter העברנו ל ●XML שב ListView שיצרנו הפניה ל ListView נתנו ל הוספנו את ה Adapter ל ListView שיצרנו●

:ListView עריכת הנתונים ב

Copyright © 2019 appSchool. Powered by appSchool.co.il

14

Page 15: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

בשביל לערוך את הנתונים באחד התאים שב ListView נעקוב אחרי השלבים הבאים: בדוגמה שלנו לחיצה על אחד התאים תיקח אותנו למסך Edit שבו נוכל לערוך את

הערכים שבתא.

שלב 1 - יצירת מסך EditActivity ריק ועיצובו:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical"

Copyright © 2019 appSchool. Powered by appSchool.co.il

15

Page 16: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

tools:context="il.co.appschool.section17_listview1.EditActivity">

<ImageView android:layout_width="200dp" android:layout_height="200dp" android:id="@+id/ivProduct"

/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btnPic" android:text="Take new picture" /> <EditText android:layout_width="200dp" android:layout_height="wrap_content" android:id="@+id/etTitle" android:hint="title" android:textSize="30sp"

/> <EditText android:layout_width="200dp" android:layout_height="wrap_content" android:id="@+id/etSubtitle" android:hint="subtitle" android:textSize="30sp"

/> <EditText android:layout_width="200dp" android:layout_height="wrap_content" android:id="@+id/etPrice" android:hint="price"

Copyright © 2019 appSchool. Powered by appSchool.co.il

16

Page 17: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

android:textSize="30sp"

/>

<Button android:layout_width="200dp" android:layout_height="wrap_content" android:id="@+id/btnSave" android:text="save" /> <Button android:layout_width="200dp" android:layout_height="wrap_content" android:id="@+id/btnCancel" android:text="cancel" /> </LinearLayout>

:MainActivity ב ListView שלב 2 - נבנה פונקציית האזנה ללחיצה על תא ב

Copyright © 2019 appSchool. Powered by appSchool.co.il

17

Page 18: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

לשם כך נממש את הפונקציה:

ניתן לListView האזנה ללחיצה EditActivity שלב 3 - עריכת מסך

Copyright © 2019 appSchool. Powered by appSchool.co.il

18

Page 19: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

Copyright © 2019 appSchool. Powered by appSchool.co.il

19

Page 20: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

Edit למקרה שהמשתמש לחץ על לקיחת תמונה ב OnClick שלב 5 - מימוש פונקציה

Copyright © 2019 appSchool. Powered by appSchool.co.il

20

Page 21: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

שלב 6 - הוספת OnActivityResult ב EditActivity לחזרה מהמצלמה

btnSave האזנה לכפתור השמירה OnClick שלב 7 - הוספת ל

Copyright © 2019 appSchool. Powered by appSchool.co.il

21

Page 22: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

Copyright © 2019 appSchool. Powered by appSchool.co.il

22

Page 23: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

:MainActivity -ב onActivityResult -ב EditActivity שלב 8- נממש את האפשרות שחזרנו מהמסך

תוכלו להריץ עכשיו את האפליקציה ולשנות את הנתונים ב ListView שלכם :)

Copyright © 2019 appSchool. Powered by appSchool.co.il

23

Page 24: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

:ListView הוספת איבר ל

:MainActivity נוסיף כפתור להוספה ב

נצהיר על הכפתור:

ניתן לכפתור הפניה והאזנה ללחיצה.

נממש את פונקציית ההאזנה:

נוסיף לפונקציה onActivityResult את האפשרות שחזרנו ממצב הוספת פריט חדש:

Copyright © 2019 appSchool. Powered by appSchool.co.il

24

Page 25: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

עכשיו כשהמשתמש ילחץ על הכפתור, הוא יעבור ל EditActivity, שם הוא יוכל להגדיר

איבר חדש ולבסוף להוסיף אותו לרשימה. נוכל להריץ ולראות את האיבר שהוספנו:

Copyright © 2019 appSchool. Powered by appSchool.co.il

25

Page 26: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

Copyright © 2019 appSchool. Powered by appSchool.co.il

26

Page 27: ListView - 15 קרפ · ListView - ב את לכ לעש תונוכתה תא ליכמש java class רוצינ. 2 ArrayAdapter מ שרויש MyAdapter אמגודל והשלכ

:ListView מחיקת איבר מ לחיצה ארוכה על איבר ב ListView תמחק אותו.

ניתן ל ListView האזנה ללחיצה ארוכה:

נממש את הפונקציה:

Copyright © 2019 appSchool. Powered by appSchool.co.il

27