آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

۲۱ مطلب در دی ۱۳۹۹ ثبت شده است

لینک پروفایل مدیوم همونی که دیتا بایندینگ رو برای اندروید دولوپ کرده

داکیومنت های خیلی خوبی در مورد دیتا بایندینگ نوشته که اکثرا توی استک اور فلو رفرنس میدن

۰ نظر موافقین ۰ مخالفین ۰ ۱۸ دی ۹۹ ، ۲۰:۰۹
میم دال

اداپتر متدهای "onCreateViewHolder" و "onBindViewHolder" و همچنین کلاس داخلی ViewHolder تحت تاثیر قرار میگیرد. کد زیر اداپتر اپ انیمیشن رو نشون میده. تغییرات مشخص هستن.

۰ نظر موافقین ۰ مخالفین ۰ ۱۴ دی ۹۹ ، ۰۰:۱۷
میم دال

در دیتا بایندینگ میشه کالکشن ها، int و String و اینا رو هم استفاده کرد. برای استفاده از ArrayList باید پکیج لیست رو import کنیم. البته تعریف جنریک در XML سینتکس متفاوتی داره:

<data>

    <import type="java.util.List" />

    <import type="com.mimdal.bestcartoons.model.Cartoon" />

    <variable
        name="cartoons"
        type="List&lt;Cartoon&gt;" />

</data>

۰ نظر موافقین ۰ مخالفین ۰ ۱۳ دی ۹۹ ، ۲۳:۱۹
میم دال

برای اینکه لاجیک مربوط به کد توی XML بتونه برای ویو ست بشه، اتریبیوت های جدیدی برای ویو تعریف میکنیم و مقدار مورد نظر رو از طریق اونها در XML به ویو میدهیم. برای این کار از annotation 

@BindingAdapter()

استفاده میشه.

متدی که کاستوم setter ایجاد میکنه باید استاتیک بوده و ویوی مورد نظر که قراره اتریبیوت جدید برای اون تعریف شه، جز آرگومان هاش باشه. مثلا:

@BindingAdapter("loadImage")
public static void setImage(ImageView view, int id){
    view.setImageResource(id);
}

رشته ای که در پرانتز BindingAdapter نوشته میشه، اسم اتریبیوت هست. در متد بالا این اتریبیوت برای ImageViewها تعریف میشه و آرگومان دوم میگه که مقدار این اتریبیوت یک int هست.

نحوه استفاده از این اتریبیوت در ویوی ImageView:

app:loadImage="@{cartoon.image}"

۰ نظر موافقین ۰ مخالفین ۰ ۱۳ دی ۹۹ ، ۲۰:۲۰
میم دال

استفاده از دیتا بایندینگ راهیه که از شر findViewById اینا راحت شیم و کدنویسی رو کوتاه تر میکنه.

برای فعال سازی دیتا بایندینگ، در build.gradle کد هایلایت شده رو اضافه میکنیم:

۰ نظر موافقین ۰ مخالفین ۰ ۱۱ دی ۹۹ ، ۰۳:۲۷
میم دال

نمایندگی یا Delegation

اگر کلاس A رو داشته باشیم و بخواهیم عملکردهای کلاس B رو هم داشته باشه، دو روش وجود داره:

 

1. استفاده از وراثت یا inheritance

2. استفاده از Delegation - در این حالت یک شی از B به A پاس میدیم. در این صورت کارهایی که B میتونست انجام بده رو A هم میتونه.

۰ نظر موافقین ۰ مخالفین ۰ ۰۹ دی ۹۹ ، ۰۱:۴۹
میم دال

برای بعضی third libraryها باید پروگارد رو غیر فعال کنیم. توی گیت اکثر کتابخونه ها قوانین پروگاردشون نوشته شده که باید توی فایل proguard-rules.pro کپی پیست شه.

 

مثلا اینجوری نوشته میشه:

-keep class  اسم کامل کلاس.**

دستورات dontWarn و اینا هم داره.

 

این ریپازیتوری قوانین پروگارد اکثر کتابخونه ها رو نوشته.

این کتابخونه هم خودش به صورت خودکار قوانین لازم برای پروگارد رو اضافه میکنه و نیازی نیست ما کاری انجام بدیم.

۰ نظر موافقین ۰ مخالفین ۰ ۰۸ دی ۹۹ ، ۰۱:۲۷
میم دال