tejariapp-new-logotejariapp-new-logotejariapp-new-logotejariapp-new-logo
  • صفحه اصلی
  • پروژه ها
    • پروژه طراحی سایت
    • پروژه های اندروید
    • پروژه های تحت ویندوز
    • UI & UX
    • ربات تلگرام
  • سفارش پروژه
    • انجام پروژه اندروید (Android)
    • طراحی و ساخت اپلیکیشن موبایل
    • انجام پروژه طراحی سایت با php
    • انجام پروژه طراحی سایت با Asp.net
    • انجام پروژه سی شارپ
    • فرم سفارش پروژه
  • مدرسه ی تجاری اپ
    • طراحی سایت
    • اندروید
    • سی شارپ
    • آموزش پایگاه داده
    • برنامه های کاربردی
  • لینک های مفید
    • پرداخت آنلاین
    • درباره تجاری اپ
    • تماس با ما
استخدام برنامه نویس متلب
سفارش پروژه
✕
            هیچ نتیجه ای یافت نشدمشاهده همه نتایج

            کار با اشیاء داده observable در دیتا بایندینگ Data Binding

            • صفحه نخست
            • مدرسه ی تجاری اپ آموزش اندروید
            • کار با اشیاء داده observable در دیتا بایندینگ Data Binding
            پیکربندی لایه ها Layout و دستورات binding - آموزش Data Binding
            پیکربندی لایه ها Layout و دستورات binding – آموزش Data Binding
            7 فروردین 1399
            سورس کد php سیستم حضور و غیاب آنلاین دانش آموزان
            سورس کد php سیستم حضور و غیاب آنلاین دانش آموزان
            30 فروردین 1399
            منتشر شده توسط مهندس داودی
            کار با اشیاء داده observable در دیتا بایندینگ Data Binding

            کار با اشیاء داده observable در دیتا بایندینگ Data Binding

            کار با اشیاء داده observable در دیتا بایندینگ ، کلاس های observable در دیتا بایندینگ یک نوع خاص برای متغیر ها هستند ،مانند نوع های دیگری که برای متغیر ها استفاده می کنیم برای مثال String ، int ، double و …

            کار با اشیاء داده observable در دیتا بایندینگ Data Binding

            تفاوت نوع Observable با بقیه نوع های فیلد در چیست ؟

            درواقع نوع Observable این قابلیت را به متغیر می دهد که زمان تغییر مقدار درون متغیر به تمام وابسته های خود یک هشدار دهد.به عبارت دیگر میتوان گفت متغیرهای از نوع Observable دیگر نیازی نیست که زمان به روزرسانی داده درون آنها کد نویسی انجام شود که UI هم بروز شود بلکه خود Observables این قابلیت را دارد که زمان به روز شدن خود آن به صورت اتوماتیک UI را هم بروز رسانی کند که این قابلیت قطعا قابلیت جذاب و کاربردی است.این در حالی ست که هر نوع شی plain-old می تواند به صورت دیتا بایندینگ پیاده و استفاده شود اما تغییر مقدار درون آن به صورت اتوماتیک منجر به بروزرسانی UI نمی شود.

            نکته :‌
            منظور از شی plain-old درواقع همان POJO یا plain old java object است که درواقع کلاس هایی است که برای مدیریت یک موجودیت در پروژه پیاده سازی و استفاده می شود .از جمله مباحث قابل استفاده در POJO ها می توان به getter و setter ها اشاره کرد.

            اشیاء داده observable

            کتابخانه Data binding به شما این اجازه را می دهد که object یا field یا حتی مجموعه ها ازجمله List را بصورت Observable پیاده کنید.زمان استفاده از دیتا بایندینگ متغیر شما این قابلیت را دارد که زمان تغییر مقدار درون آن به بقیه مولفه های وابسته خود اطلاع دهد.که این اطلاع دادن هم با استفاده از Listener یا شنوند هایی که Observable در اختیار شما قرار می دهد ممکن خواهد شد.

            ما سه دسته کلاس Observable داریم که شامل objects ، fields و collections هاست.در ادامه هر کدام را مفصل توضیح خواهیم داد.زمانی که از هرکدام از سه نوع objects ، fields و collections از کتابخانه دیتا بایندینگ در UI استفاده شود ، با تغییر داده درون هر کدام از آنها ، UI هم به صورت اتوماتیک به روزرسانی می شود.

            Observable fields

            با استفاده از Observable fields شما می توانید هر نوع متغیر را بصورت Observable‌ پیاده کنید.منظور از هرنوع درواقع هرنوع داده ای ست که میخواهید استفاده کنید.برای مثال :

            • ObservableBoolean
            • ObservableByte
            • ObservableChar
            • ObservableShort
            • ObservableInt
            • ObservableLong
            • ObservableFloat
            • ObservableDouble
            • ObservableParcelable

            برای پیاده سازی هر کدام هم تنها کافی است یک شی از نوع هر کدام از کلاس های فوق بصورت final در جاوا یا val در کاتلین ایجاد کنید.و در ادامه با استفاده از متد getter یا setter که خودِ کلاس های Observable فوق در اختیار شما قرار می دهند به داده دسترسی داشته باشید:

            جاوا

             private static class User {
                 public final ObservableField firstName = new ObservableField<>();
                 public final ObservableField lastName = new ObservableField<>();
                 public final ObservableInt age = new ObservableInt();
             }
            

            کاتلین

             class User {
                 val firstName = ObservableField()
                 val lastName = ObservableField()
                 val age = ObservableInt()
             }
            

            و همچنین برای دسترسی به داده های درون هر شی میتوانید بصورت زیر کدنویسی کنید:

            جاوا

            user.firstName.set("Tejariapp.com");
             int age = user.age.get();
            

            کاتلین

             user.firstName = "Tejariapp.com"
             val age = user.age
            

            Observable collections

            بعضی مواقع شما نیاز خواهید داشت یک سری داده داینامیک را ذخیره و بازیابی کنید .بدین صورت که از تعداد و مقادیر داده ها اطلاع ندارید , ،در این حالات می توانید از کلاس ObservableArrayMap استفاده کنید که این امکان را به شما می دهد تا با استفاده از کلید ( کلید از نوع String ) به داده ها دسترسی داشته باشید.بدین صورت :

            جاوا

             ObservableArrayMap user = new ObservableArrayMap<>();
             user.put("firstName", "Tejariapp.com");
             user.put("lastName", "Inc.");
             user.put("age", 17);
            

            کاتلین

             ObservableArrayMap().apply {
                 put("firstName", "Tejariapp.com")
                 put("lastName", "Inc.")
                 put("age", 17)
             }
            

            همچنین در لایه هم شما قادر خواهید بود به داده های درون آرایه با استفاده از کلید آنها بدین صورت دسترسی داشته باشید:

            <data>
                <import type="android.databinding.ObservableMap"/>
                <variable name="user" type="ObservableMap<String, Object>"/>
            </data>
            …
            <TextView
                android:text="@{user.lastName}"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <TextView
                android:text="@{String.valueOf(1 + (Integer)user.age)}"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            
            

            همچنین می توانید با کلاس ObservableArrayList به داده ها با استفاده از کلید از نوع Integer هم دسترسی داشته باشید:

            جاوا

             ObservableArrayList user = new ObservableArrayList<>();
             user.add("Google");
             user.add("Inc.");
             user.add(17); 
            

            کاتلین

              ObservableArrayList().apply {
                  add("Google")
                  add("Inc.")
                  add(17)
              }
            

            و همچنین درلایه هم بدین صورت آنها را فراخوانی کنید:

            <data>
                <import type="android.databinding.ObservableList"/>
                <import type="com.example.my.app.Fields"/>
                <variable name="user" type="ObservableList<Object>"/>
            </data>
            …
            <TextView
                android:text='@{user[Fields.LAST_NAME]}'
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <TextView
                android:text='@{String.valueOf(1 + (Integer)user[Fields.AGE])}'
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            

            Observable objects

            کلاس هایی که اینترفیس Observable را پیاده سازی می کنند به شنونده های ثبت شده در خود این اجازه را می دهند که از تغییرات مقدار درون پراپرتی ها مطلع شوند.اما کتابخانه دیتا بایندینگ برای راحتی کار کلاسی با نام BaseObservable ارائه داده که می توانید کلاس های خود را از این کلاس extend کنید ( بدین معنا که کلاس شما از کلاس BaseObservable ارث بری کند) و شنونده ها یا listener های کلاس BaseObservable را پیاده کنید.

            کلاس داده یا data class ی که کلاس BaseObservable را پیاده می کند درواقع به داده های درون خود این قابلیت را داده که زمان تغییر مقدار درونشان به کلاس های وابسته خود اطلاع دهند.این عملیات با انتصاب حاشیه نوشت (annotation) مربوط به خود دیتا بایندینگ با نام Bindable برروی getter های کلاس داده و همچنین فراخوانی متد notifyPropertyChanged() درون متد stter تکمیل و پیاده میشود.توضیحات فوق در مثال زیر پیاده شده است :

            جاوا

            private static class User extends BaseObservable {
                private String firstName;
                private String lastName;
            
                @Bindable
                public String getFirstName() {
                    return this.firstName;
                }
            
                @Bindable
                public String getLastName() {
                    return this.lastName;
                }
            
                public void setFirstName(String firstName) {
                    this.firstName = firstName;
                    notifyPropertyChanged(BR.firstName);
                }
            
                public void setLastName(String lastName) {
                    this.lastName = lastName;
                    notifyPropertyChanged(BR.lastName);
                }
            }
            

            کاتلین

            class User : BaseObservable() {
            
                @get:Bindable
                var firstName: String = ""
                    set(value) {
                        field = value
                        notifyPropertyChanged(BR.firstName)
                    }
            
                @get:Bindable
                var lastName: String = ""
                    set(value) {
                        field = value
                        notifyPropertyChanged(BR.lastName)
                    }
            }
            

            کتابخانه Data binding یک کلاس با نام BR درون ماژول پکیج تولید می کند که محتوی درون آن ID های منابع مورد استفاده برای اتصال داده است.برای مثال کد زیر مشخص کننده یک منبع مورد استفاده در لایه می باشد:

                <data>
            
                    <variable
                        name="item"
                        type="com.tejariapp.sampleData" />
                </data>
            

            که در کلاس BR که توسط دیتا بایندینگ ساخته می شود ،فیلد item هم برای لایه ای که در آن استفاده شده ،ساخته می شود و می توان به صورت زیر از آن استفاده کرد:

            BR.item

            همچنین زمانی که شما annotation (حاشیه نوشت) Bindable را استفاده می کنید درواقع دارید یک ورودی به کلاس BR ارسال می کنید بدین معنا که اگر شما دستور زیر را نوشته باشید ،در حقیقت دارید مقدار فیلد lastName را به عنوان یک مرجع به کلاس BR جهت ساخت و شناختن در کتابخانه دیتا بایندینگ ارسال می کنید.

             @Bindable
                 public String getLastName() {
                     return this.lastName;
                 }
            

            امیدوارم آموزش کار با اشیاء داده observable در Data Binding برای شما مفید بوده باشد.

            اشتراک گذاری

            پست های مرتبط

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            30 بهمن 1400

            دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            30 بهمن 1400

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            توابع در زبان برنامه نویسی دارت (Dart)

            توابع در زبان برنامه نویسی دارت (Dart)

            27 بهمن 1400

            توابع در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب

            دیدگاهتان را بنویسید لغو پاسخ

            نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

            ساخت اپلیکیشن های موبایل

            • ساخت اپلیکیشن فروشگاهی
            • ساخت اپلیکشن ابزاری و خدماتی
            • ساخت اپلیکیشن آموزشی
            • و هزاران موضوع دیگر

             
            کلیک کنید

            آخرین دیدگاه ها

            • 9 اسفند 1401

              مهری اصغری نظر در پیاده سازی اولین پروژه با فلاتر Flutter

            • 26 آبان 1401

              سجاد نظر در پروژه مدیریت سیستم مدرسه با سی شارپ و sql server

            • 7 خرداد 1401

              داودی نظر در آموزش استفاده از ckeditor همراه با آپلود عکس در لاراول 6

            تجاری اپ در شبکه های اجتماعی

            لوگوی تایید پرداخت آنلاین

            2015-2022 © تمامي حقوق مادي و معنوي اين وب سايت نزد تجاری اپ محفوظ بوده و هر گونه کپي برداري از مطالب پيگرد قانوني به همراه دارد! | طراح سایت : ProgRun
            سفارش پروژه
                      هیچ نتیجه ای یافت نشدمشاهده همه نتایج