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

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

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

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

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

در دیتا بایندینگ میشه کالکشن ها، 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 و اینا هم داره.

 

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

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

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

پروگارد یه نرم افزار کامند لاینی هست که جز SDK اندروید بوده و باهاش میشه کار minimize، hide و optimize برای کد انجام داد.

اندروید استودیوی جدید از R8 بجای پروگارد استفاده میکنه. برای فعال سازی R8 از کد زیر در گریدل استفاده میشود:

buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

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

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

 

خلاصه آموزش:

با نوشتن کد زیر یک تکست ویو به آی دی tv_noNetwork بایند میشود و در برنامه توسط tv_noNetwork به این ویو دسترسی داریم.

 

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