سلام دوستان
سوال اول :
استاد چرا اول کلاس Student را نوشت بعد نوشت student مگر مثل دفعه قبلی که راجب آداپتر میگفتند در RecyclerView اول نوشتند String
سوال دوم :
چرا استاد ایجوری نوشت :
(String.valueOf(student.getScore()))
مگر اینجوری نمشد بنویسیم
(student.getScore())
نیست int مگر String بعد چرا
: سوال سوم
دوستان این خط چه کار میکنه؟؟؟
android:clipToPadding="false"
سلام و احترام
دقت کنید ما در اینجا با Model سر و کار داریم
و دیتای دریافتی ما از سمت سرور شامل فیلد هایی به عنوان مثال firstname و last_name و course و.. هست .
public class Student {
private int id;
private String firstName;
private String lastName;
private String course;
private int score;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
در Data Modelها از کپسوله سازی استفاده میشود. در کپسوله سازی سعی میشود متغیرها را از دید دیگر کلاسها مخفی کنیم و با استفاده از متدهای واسط که به اصطلاح به آنها Setter و Getter میگویند، متغیرها را مقدار دهی و یا از آنها مقدار گیری کنیم.
کاربرد setter : هنگامی که دیتا از سمت سرور اومد دیتا رو به وسیله setter ها مقدار دهی میکنیم.
کاربر getter :در متد bind کلاس adapter برای ست کردن دیتا بر روی view ها استفاده میکنیم .
به همین دلیل هست که به عنوان پارامتر متد bind این Student student رو میدیم تا دیتا رو با استفاده از getter() اون ست کنیم بر روی view ها.
سوال دوم : هنگامی که دیتای Score از سرور دریافت میشه یه مقدار Integer هست (به json دقت کنین)
همونطور که قبلا آموختید نمیتوانید جز مقداری با دیتاتایپ String به setter یک view بدهید یعنی (setText(۵) غلط است چرا که باعث کرش اپلیکیشن خواهد شد(امتحان کنید).
پس به عمین دلیل با String.valueOf اومدیم و مقدار integer رو به String تبدیل کردیم تا باعث کرش اپ نشود.
سوال سوم:
باعث میشه padding در انتهای ریسایکلر در نظر گرفته نشه برای اینکه این موضوع رو متوجه شید گیف زیر رو ببینید.
اونی که ضربدر دارد clipToPadding برابر با true هست.