شرح استخدام الmvvm في برنامج Android Studio اندرويد ستوديو ( design patterns )

شرح استخدام الmvvm في برنامج Android Studio اندرويد ستوديو  ( design patterns )


استخدام mvvm داخل تطبيقاتك في اندرويد ستوديو بكل سهوله


تعتمد الشركات في الفترة الحاليه الى تنظيم الكود بشكل كبير وهذا لانه يوفر على المطورين الاخرين سهولة التعديل على الكود الخاص بك وانت شخصيا تستطيع التعديل عليه بسهوله وهذا النموذج mvvm اكثر نموذج مطلوب بين الشركات حاليا لان كل عمل مفصول عن الاخر الui مفصول عن الnetwork وهذا ما يميز النموذج , وفي هذة المقالة سوف نشرح بإذن الله تعالى استخدام النموذج في تطبيقات الاندرويد وسوف نقدر عليه الكثير من الامثلة في المقالات الاخرى لكي تستطيع الاعتماد عليه بشكل اكبر عن غيره من الانمظة في تطبيقات الاندرويد التي تقوم بتطويرها .


هل تعلم عزيزي القارئ ان اكثر لغه يستعملها مطورون تطبيقات الاندرويد حاليا هي لغه الجافا وهذا رغم وجود لغه اخرى مثل الكوتلن التي ظهرت في الاونه الاخيره وكانت شركه جوجل العملاقه تدعم هذه اللغه بقوه ولكن ما نزال نسمع عن وجود مطورين اندرويد باستخدام لغه الجافا بل ان اكثر من يستخدمون تطوير الاندرويد حاليا يستخدمون لغة java . السبب يرجع في وجود شروحات كثيره بالجافا وايضا وجود الكثير من المكتبات والادوات التي تساعد المطورين كل هذا باستخدام لغه جافا ولكن لغه الكوتلن لغه ابسط وفي نفس الوقت تفضلها شركه جوجل عن java وكما تعلمون اننا في موقع جي كودرس نحاول ان نشرح لكم كل ما هو مفيد ويهمك كمطور في عالم البرمجيات وهذة الفترة نركز معك معلى يشرح ألجوفا. وايضا في الايام المقبله سوف نتناول معكم في لغات البرمجه الاخرى ولكن قبل هذا يجب ان نضع لكم كل ما تحتاجونه في لغه الجافا لانه عندما تريدون تطوير احد التطبيقات في طبيعه الحال سوف يكون الخيار الاول هو جافا اذا كنت تعمل مع شركة . 


الكثير منكم يستخدم لغه java في هذا الوقت لذلك نحاول وضع لكم جميع الافكار والطرق التي قد تؤثر في سلوك تطبيقك وايضا في الايام المقبله سوف نقوم بفعل نفس الامر مع اللغات المختلفه ولكن نرجوا منكم دعم الموقع عن طريق مشاركته مع اصدقائكم لان هذا يساعدنا على الاستمرار في تنزيل الكثير والمزيد من الاكواد المفيده التي تحتاجونها ويهدف الموقع الى مساعده جميع العرب في تطوير تطبيقاتهم ومساعدتهم ايضا في تعلم البرمجه حيث ان علم البرمجه حاليا يعد من اكثر المهارات التي يجب ان تتوفر لدى كل شخص. هذا العلم من العلوم الاساسيه. في المستقبل لانه كما نرى الكثير من الاشياء والادوات التقنيه تتجه بشكل اكبر الى التكنولوجيا وهذا لان اغلب الشروحات نجدها عند الاجانب ولكن العرب لا يتوفر لديهم معرفه كامله بالاكواد او بمعنى اخر من يفهم اللغه بشكل كامل يكون شخص قد تعلمها من الاجانب ونحن نحاول معكم ان ننقل هذا لكم وتوفيره لكم باللغه العربيه الان اترككم مع الاكواد والشرح في مقالة اليوم .


تفعيل خاصية الDatabinding


سوف نقوم بتشغيل الdatabinding ايضا في التطبيق الذي نعمل عليه لذلك قم بإضافة الكود المخصص بتشغيلها .


    buildFeatures {
        dataBinding true
    }
    


المكتبات الخاصة بالـ mvvm


قم بإضافة تلك المكتبات في المكان المخصص لها داخل build gradle وهي المسؤوله عن تشغيل الmvvm والتي سوف نستعملها في هذة المقالة 


    def lifecycle_version = "2.3.0"
    // ViewModel
    implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
    // LiveData
    //noinspection GradleDependency
    implementation "androidx.lifecycle:lifecycle-livedata:$lifecycle_version"
..........................

allprojects {
    repositories {
        google()
    }
}


كيفية تنظيم مشروعك باستخدام mvvm


في نموذج mode view view model يتم تقسيم المشروع الى عدة مجلدات او packages ليتم تنظيم عملك وهنا يفضل تقسيمها الى 3 packages رئيسية كما هي موضحه ادناه ويمكنك تقسيم كل package منهم الى packages اخرى فرعيه بداخلة الامر يرجع اليك .


// Data OR model --> Logic Data Class

// View --> Logic Fragment + Activity

// ViewModel --> Logic , calls , firebase , retrofit , room , shared


التعامل مع الdata في اندرويد ستوديو


هنا قدمنا مثال بسيط جدا وهو اننا سنقوم بعمل كلاس يوجد به data ونستطيع التحكم بهذة البيانات وارسالها الى mainActivity باستخدام mvvm ولهذا قم اولا بمعرفة المتحويات التي تريد التعامل معها وهنا كانت الاسم واسم المستخدم على سبيل المثال .


Data class


التعامل مع الdata في اندرويد ستوديو


Data Class


public class Data_text {
    String name,username;
    public Data_text(String name, String username) {
        this.name = name;
        this.username = username;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}


عمل تصميم للتعامل مع البيانات


هنا قمنا بعمل تصميم بسيط جدا يحتوي على اسم المستخدم والاسم الخاص به في xml لكي نتعامل معه .


xml design


<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="data"
            type="com.example.broadcast.data.Data_text" />
    </data>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".view.MainActivity">

        <TextView
            android:id="@+id/tv_1"
            android:text="@{data.name}"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/tv_2"
            android:text="@{data.username}"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>
</layout>



ارسال البيانات باستخدام ViewModel داخل التطبيق


اولا نقوم بعمل MutableLiveData ونعطيها البيانات التي ستتعامل معها او بمعنى اخر الكلاس الذي يحمل البيانات وبعدها نكمل التعريف بشكل عادي وهنا تكون اول خطوة انتهت , الخطوة التالية وهي عمل methode تقوم بقبول وارسال البيانات وهنا ارسلنا لها الاسم احمد واسم المستخدم احمد2022 وهنا نكون انتهينا ولكن بقي خطوة صغيره وهي ارسال البيانات ولذلك سوف نقوم بإستدعاء اسم الmutableLiveData وبعدها setValue لكي نرسل البيانات .


ارسال البيانات باستخدام ViewModel داخل التطبيق

Code here .


// extends ViewModel
public class ViewModelnote extends androidx.lifecycle.ViewModel {
    public MutableLiveData<Data_text> mutableLiveData = new MutableLiveData<>();
    public void getData() {
        
        Data_text data_text = new Data_text("ahmed","ahmed2022");
        mutableLiveData.setValue(data_text);        
    }
}


استقبال بيانات الmvvm داخل MainClass


في هذة الخطوة نقوم بتعريف المتغيرات الخاصه بنا ولكني هنا استخدمت binding ولذلك لن احتاج لعمل findviewbyid كما متعارف عليها , بعدها قوم بتعريف viewModel وهو ما يظهر بالسطر 27 وبعدها في السطر رقم 28 نحصل على البيانات من الmethode التي قمنا بها داخل ViewModel واخيرا في السطر رقم 30 نخبره انه اذا حصلت على البيانات قم بعرضها مباشرة وهذا كل مافي الامر .

استقبال بيانات الmvvm داخل MainClass


كود استقبال البيانات


public class MainActivity extends AppCompatActivity {
    ActivityMainBinding binding;
    ViewModelnote viewModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = DataBindingUtil.setContentView(this , R.layout.activity_main);
        viewModel = new ViewModelProvider(this).get(ViewModelnote.class);
        viewModel.getData();
        viewModel.mutableLiveData.observe(this, new Observer<Data_text>() {
            @Override
            public void onChanged(Data_text data_text) {
                binding.setData(data_text);
            }
        });
        


الى هنا يكون انتهى شرح mvvm في اندرويد ستوديو في الدروس المقبلة بإذن الله سنحاول عمل اكثر من تطبيق حول استخدام mvvm ولهذا لا تنسى مشاركة المقالة بين اصدقائك دعما لنا ولضمان الاستمراريه في النشر .


لمزيد من الاكواد يمكنك مشاهدة التالي :

تعليقات