ودعا findViewById الاختصارات في كوتلن

نعم هذه اول تدوينة عن الاختصارات في كوتلن وهي ميزة توفر لك القدرة على اختصار الكود و اهم شيء في هذه الميزة وهي التخلص من findViewById بالتاكيد اظن انك قد تعرفت سابقا عليها للوصول الى view في ملف xml .
 ميزة الاختصارات او Kotlin Android Extensions
وهي اضافة من كوتلن تخول لك العديد من الخصائص مثل الوصول الى مشهد او fragement من خلال طرق بسيطة بعيدا عن التعقيدات التي لا طائل منها 😢😢وهذا ما سنراه .
ودعا findViewById

1-تفعيل الميزة في الكود :
لتفيعل هذه الميزة ستحتاج الى إضافة الكود التالي في ملف البويلد في الاعلى
build gradle (module:app) 
apply plugin: 'com.android.application'  أسفل
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
2-الوصول الى ملف xml و بالظبط المشاهد :
بالتاكيد ملف xml يكون مرتبط مع ملف الكوتلن وهذا من الوضوح بمكان من خلال setContentView() :
package com.androidbella.kotlin

import....

class Main : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.ac_lesson)
//لا حظ انني استطيع اضهارالملف المرغوب من خلال هذه الدالة
//setContentView(R.layout.ملف xml الدي ترغب في اضهاره)
}}
الشاهد من هذا اننا عندما نرغب في الوصول الى مشاهد الملف الذي اخترته كل ما عليك اضافة هذه السطر الى ملف الكوتلن.
تخيل معي ان هذا هو ملف xml  الخاص بك.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/welcome"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"/>

</RelativeLayout>
ونحن نرغب في تغيير النص من خلال ملف الكوتلن ببساطة اضف الكود التالي فوق class
import kotlinx.android.synthetic.main.your_activity.*
//غير your activity بما يناسبك
و للوصول اليه اكتب id الخاص به .
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    //بالنسبة لي id هو welcome
    welcome.text = "Hello Kotlin!"
}
لاحظ انه text بديلة ل setText() و يمكنك استعمال اي واحدة تشاء منها:
لكن الاشكال الاكبر انه ماذا ان كنت ترغب في اضهار ملف xml  غريب داخل ملف xml محلي المتصل بملف الكوتلن.
كنا قبل هذا نستعين ب inflater لكن حاليا اصبح ذلك موضة قديمة 👊😎💪
تخيل معي ان هذا هو ملف اخر (غريب) بداخله مشهد الصور نرغب باضهاره في ملفنا السابق.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/itemImage"
        android:layout_width="match_parent"
        android:layout_height="200dp"/>

</RelativeLayout>
ما عليك الا الاستعانة بنفس الكود الذي استعملناه للوصول الى مشاهد ملف xml المحلي
import kotlinx.android.synthetic.main.your_activity.*
//غير your activity باسم الملف الغريب
حسنا الان اضف الكود التالي للوصول الى الملف الغريب
//جلب اللف الغريب الى ملفك الحالي
val items = LayoutInflater.from(this).inflate(R.layout.اسم الملف الغريب, null)
//اضهار الصورة بالمشهد
items.itemImage.setImageResource(مسار الصورة)
//اضافته الى relative layout
root.addView(items)
سنقوم في الدرس المقبل عن fragement
هل ترغب في مثل هذه التدوينات

اسماعيل ايت بلا

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

اترك لنا تعليقا

الاشتراك بالقائمة البريدية

توصل باحدث مواضيعنا و كن على اطلاع باخر اخبار وتقنيات الاندرويد