Android

এন্ড্রয়েডে ডাটাবাইন্ডিং লাইব্রেরী ব্যবহার – পর্ব – ২

data binding

ডাটাবাইন্ডিং প্রথম পর্ব

এন্ড্রয়েডে ডাটাবাইন্ডিং লাইব্রেরী ব্যবহার – পর্ব-১

 

এই পর্বে আমরা জানবো কিভাবে রিসাইকেলার ভিউ তে ডাটা বাইন্ড করতে হয়।

এই পর্বে আমরা টু ওয়ে বাইন্ডিং, ইমেজ সেট করা, বাটন ইমপ্লিমেন্টেশন, অব্জারভেবল ফিল্ড নিয়ে কাজ শিখব।

 

এই প্রজেক্টে দুটি মডেল ক্লাস ব্যবহার করা হয়েছে।

 

নিচের ডিপেন্ডেন্সি গুলো build.gradle এপে এড করি।

 

নিচের মডেল ক্লাসটি BaseObservable ক্লাস কে এক্সটেন্ড করেছে। এর মাধ্যমে আমরা মডেল ক্লাসের ভেরিয়েবল কে অব্জারভেবল হিসেবে সহজেই ডিক্লেয়ার করতে পারি।

রানটাইমে ভেরিয়েবলের ডাটা পরিবর্তন হলেই ভেরিয়েবলটি নোটিফাই হবে এবং তার বর্তমান ডাটা পরিবর্তন করবে।

এটির জন্যে আমাদেরকে

গেট মেথোড কে @Bindable এনোটেশন দ্বারা এড করতে হয় এবং সেট মেথোডের ভিতর notifyPropertyChanged(); মেথোড  দ্বারা ডাটা পরিবর্তির হয়েছে সেটি নোটিফাই করা হয়।

 

ফুড মডেল ক্লাস

 

বেইজ এডাপ্টার কে এক্সটেন্ড করা হল এবং onBindViewHolder() কে অভাররাইড করে ভিউ তে ক্লিক লিসেনার এড করলাম। এভাবে রিসাইকেলার ভিউ এর জন্যে সিঙ্গেল আইটেমে ক্লিক লিসেনার এড করা যাবে। যদিও আরো কিছু সহজ ওয়ে আছে। Explore them.

 

 

বেইজ এডাপটার। ভিউ হোল্ডারে  ক্লিক লিসেনার ব্যবহার করা হয়েছে। অনক্লিক মেথোড অভাররাইড করে সম্পূর্ণ ভিউ এর জন্যে ক্লিক লিসেনার কাজ করা যেতে পারে।

এখানে ViewDataBinding (বেইজ ক্লাস) ব্যবহার করা হয়েছে।

এই বেইজ এডাপ্টার দিয়ে মাল্টিপল এডাপ্টার এড করা হতে পারে। ফলে অনেক গুলো বাইন্ড ক্লাস জেনারেট হবে, যা এই বেইজ ক্লাস সহজেই হ্যান্ডেল করতে পারে। (শত হলেও সবার বাপ :p)

 

 

এখন আসা যাক মূল জিনিসে, নিচের পরপর দুইটি এক্সএমএল ফাইলগুলো দুইটি রিসাইকেলার ভিউ এর row হিসেবে ব্যবহৃত হয়েছে। এই রিসাইকেলারে ডাটা লোড করার জন্যে আমরা ডাটা ট্যাগ ব্যবহার করেছি। তার মাঝে আমরা আমাদের ভেরিয়েবল এবং কোন টাইপের ভেরিয়েবল তা বলে দিলাম।

টাইপ গুলো হচ্ছে আমাদের উপরের দুটি মডেল ক্লাসের। এই মডেল ক্লাস দিয়েই আমাদের ডাটা রিসাইকেলারে লোড হবে। এক্সএম এলে আমরা ভেরিয়েবল টি দিয়ে মডেল ক্লাসের ভেরিয়েবল গুলো এক্সেস করলাম।

মডেল ক্লাসে ডাটা পাস করালেই রিসাকেলারে ডাটা লোড হবে।

ডাটা লোড করার পূর্বে প্রজেক্ট বিল্ড করা দরকার, কেননা আমাদের বিল্ট ইন BR ক্লাসে xml এর ডিক্লেয়ার করা ভেরিয়েবল গুলো থাকতে হবে। তবে অনেক ক্ষেত্রেই অটো জেনারেট হয়ে থাকে।

এখন আমাদের বেইজ এডাপটার টি একটু লক্ষ্য করি। ভিউ হোল্ডারের বাইন্ড মেথোডে অব্জেক্ট পাস করাচ্ছি। xml এ ডিক্লেআর করা ভেরিয়েবল গুলোর টাইপ হচ্ছে অবজেক্ট। দুটো এক্স এম এলের অবজেক্ট গুলোকে আমরা রিসাইকেলারের সাথে বাইন্ড করেছি। এখন মডেল ক্লাসে ডাটা পাস করালেই রিসাইকেলারে ডাটা লোড হবে।

 

 

 

 

BUTTON

ডাটা বাইন্ডিং এর সাথে MVP প্যাটার্ন ভাল কাজ করে। এই উদাহরণে এটি উহ্য।

বাটন ভেরিয়েবলের মাধ্যমে ক্লাসে বাটন এক্সেস করব।

android:onClick=”@{()-> btn.show(pojo)}”

এই ভাবে বাটনে লিসেনার এড করা যায়। এখানের show() হচ্ছে মেইন এক্টিভিটির একটি মেথোড যেখানে পজো অবজেক্ট পাস করিয়েছি। ফলে পজো মডেল ডাটা পাস করানো হলে সেই ডাটা বাটনে মাধ্যমে এক্সেস করা যাবে বা অন্য একটিভিটি তে ইন্টেন্ট দিয়ে পাস করা যাবে।

বাটনে ক্লিক লিসেনার এড করার জন্যে একটিভিটিতে setBtn() মেথোড কল করতে হবে।

 

IMAGE

app:imgSrc=”@{pojo.img}”

ইমেজ ভিউ তে ডাটা বাইন্ডিং দিয়ে ইমেজ সেট করতে হলে নিজের মত করে একটি এট্রিভিউট এক্স এম এলে ডিক্লেয়ার করতে হবে এবং সেখানে ইমেজের পাথ বা ইমেজের ইউ আরেল পাস করাতে হবে।

এখানে imgSrc হচ্ছে নিজের বানানো একটি এট্রিবিউট, চাইলে imgSrcUrl, imageUrl ইত্যাদি যেকোন নাম দেওয়া যেতে পারে।

ইমেজ সেট করার জন্যে static মেথোড ডিক্লেয়ার করতে হবে ঠিক নিচের মত করে।

মেথোডে অবশ্যই @BindingAdapter এনোটেশন ব্যবহার করতে হবে, সাথে xml এর imgSrc এট্রিবিউট নামটি ঠিকভাবে এখানে দিতে হবে। নাম ভিন্ন হলে মেথোড কাজ করবেনা।

 

 

 

 

Download this project github https://github.com/shaon2016/Data-Binding

For more, see this: https://developer.android.com/topic/libraries/data-binding/index.html

Leave a Reply

Your email address will not be published.

five + twenty =