DatePicker
এই পর্বে আমরা দেখবো কিভাবে আমরা ক্যালেন্ডার থেকে ডেট নিয়ে কাজ করতে পারি ।
আমাদের ডিজাইনটা এরকম হবে যে একটি বাটনে ক্লিক করলে ক্যালেন্ডার দেখাবে । সেখান থেকে ডেট নিয়ে একটি টেক্সভিউতে ডেট দেখাবো । আমি এবারও ডিজাইন পার্ট নিয়ে আলোচনা করবো নাহ । ডিজাইন এর কোডগুলো বুঝতে আমার আগের ব্লগগুলো পড়ে আসার অনুরোধ রইলো । তো চলুন শুরু করা যাক -
activity_main.xml -
MainActivity.java -
গত ব্লগ পড়ে আসলে নিশ্চয়ই বুঝতে পারছেন এখানে প্রতিটি লাইনে কি করা হইছে 😊
যে টেক্সভিউটি আছে সেটির ভিতর বর্তমান ডেট বসিয়ে দিলাম । ডেট বসানোর ম্যাথডটি onCreate ম্যাথডের বাহিরে ডিক্লার করতে হবে কেননা এক ম্যাথডের ভিতরেই আরেকটি ম্যাথড তার কোন ভ্যালু রিটার্ন করবে এটা সম্ভব নাহ ।
আগের ব্লগ পড়ে আসলে নিশ্চয়ই বুঝতে পারছেন । সেইম কোড ।
এবার বাটনে ক্লিক করলে যে কাজ করবে তার কোড করা যাক -
TimePicker এর মতই সেইম কাজ । এখানেও ৫ টি কন্সট্রাক্টর । প্রথম দুটি TimePicker এর মতই আর বাকি ৩ টি বছর,মাস ও কোন দিন তার ভ্যালু, যে ভ্যালুগুলো আমারা দেখাবো । এখানে কন্সট্রাক্টর এর সিরিয়াল অনুযায়ী ভ্যালু দিতে হবে । আর এখানে তো কোন ১২ ঘন্টা ২৪ ঘন্টার কোন ব্যাপার নাই , তাই TimePicker এর মত true false নাই ।
s দ্বারা যে ডেট টা রিসিভ করে সেটি নিয়ে আমরা যা করবো তার কোড করা যাক । খুব সিম্পল । ডেট টা একটি টেক্সভিউতে সেট করবো -
কন্সট্রাক্টর এর সিরিয়াল অনুযায়ী আমরা i তে বছর, i1 এ মাস ও i2 তে দিন পেলাম । এগুলো পূর্ণ সংখ্যা আসবে কিন্তু আমরা চাই মাসের নাম দেখাক । তাই একটি String ভ্যারিয়েবল নিয়ে সিরিয়াল অনুযায়ী মাসের নামগুলো সেই ভ্যারিয়েবল এর ভিতর সেট করে দিলাম ।
এরপর সেই ভ্যারিয়েবল টি মাসের বদলে setText এ বসিয়ে দিলাম । এখানে আপনি যেভাবে ভ্যারিয়েবল গুলো বসাবেন ঠিক সেভাবেই ডেট টা দেখাবে 😊
আমাদের অ্যাপ যেভাবে কাজ করবে -
আমাদের ডিজাইনটা এরকম হবে যে একটি বাটনে ক্লিক করলে ক্যালেন্ডার দেখাবে । সেখান থেকে ডেট নিয়ে একটি টেক্সভিউতে ডেট দেখাবো । আমি এবারও ডিজাইন পার্ট নিয়ে আলোচনা করবো নাহ । ডিজাইন এর কোডগুলো বুঝতে আমার আগের ব্লগগুলো পড়ে আসার অনুরোধ রইলো । তো চলুন শুরু করা যাক -
activity_main.xml -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.user.timepicker.MainActivity">
<Button
android:id="@+id/showDate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Show Date"
android:textSize="25sp"/>
<TextView
android:id="@+id/pickDate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:gravity="center"
android:textColor="@color/colorPrimary"/>
</LinearLayout>
MainActivity.java -
public class MainActivity extends AppCompatActivity {
Button btn ;
TextView pickDate;
Calendar calendar = Calendar.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pickDate= findViewById(R.id.pickDate);
btn = findViewById(R.id.showDate);
গত ব্লগ পড়ে আসলে নিশ্চয়ই বুঝতে পারছেন এখানে প্রতিটি লাইনে কি করা হইছে 😊
pickDate.setText(getDateTime());
যে টেক্সভিউটি আছে সেটির ভিতর বর্তমান ডেট বসিয়ে দিলাম । ডেট বসানোর ম্যাথডটি onCreate ম্যাথডের বাহিরে ডিক্লার করতে হবে কেননা এক ম্যাথডের ভিতরেই আরেকটি ম্যাথড তার কোন ভ্যালু রিটার্ন করবে এটা সম্ভব নাহ ।
private String getDateTime() {
SimpleDateFormat sdf = new SimpleDateFormat("d MMM, yyyy");
return sdf.format(calendar.getTime());
}
আগের ব্লগ পড়ে আসলে নিশ্চয়ই বুঝতে পারছেন । সেইম কোড ।
এবার বাটনে ক্লিক করলে যে কাজ করবে তার কোড করা যাক -
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new DatePickerDialog(MainActivity.this,s,calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
TimePicker এর মতই সেইম কাজ । এখানেও ৫ টি কন্সট্রাক্টর । প্রথম দুটি TimePicker এর মতই আর বাকি ৩ টি বছর,মাস ও কোন দিন তার ভ্যালু, যে ভ্যালুগুলো আমারা দেখাবো । এখানে কন্সট্রাক্টর এর সিরিয়াল অনুযায়ী ভ্যালু দিতে হবে । আর এখানে তো কোন ১২ ঘন্টা ২৪ ঘন্টার কোন ব্যাপার নাই , তাই TimePicker এর মত true false নাই ।
s দ্বারা যে ডেট টা রিসিভ করে সেটি নিয়ে আমরা যা করবো তার কোড করা যাক । খুব সিম্পল । ডেট টা একটি টেক্সভিউতে সেট করবো -
DatePickerDialog.OnDateSetListener s = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
String month = null;
if (i1==0){
month="January";
}else if(i1==1){
month="February";
}else if(i1==2){
month="March";
}else if(i1==3){
month="April";
}else if(i1==4){
month="May";
}else if(i1==5){
month="June";
}else if(i1==6){
month="July";
}else if(i1==7){
month="August";
}else if(i1==8){
month="September";
}else if(i1==9){
month="Octobar";
}else if(i1==10){
month="November";
}else if(i1==11){
month="December";
}else{
month = "sorry for app problem";
}
pickDate.setText(i2+" "+month+" "+i);
}
};
কন্সট্রাক্টর এর সিরিয়াল অনুযায়ী আমরা i তে বছর, i1 এ মাস ও i2 তে দিন পেলাম । এগুলো পূর্ণ সংখ্যা আসবে কিন্তু আমরা চাই মাসের নাম দেখাক । তাই একটি String ভ্যারিয়েবল নিয়ে সিরিয়াল অনুযায়ী মাসের নামগুলো সেই ভ্যারিয়েবল এর ভিতর সেট করে দিলাম ।
এরপর সেই ভ্যারিয়েবল টি মাসের বদলে setText এ বসিয়ে দিলাম । এখানে আপনি যেভাবে ভ্যারিয়েবল গুলো বসাবেন ঠিক সেভাবেই ডেট টা দেখাবে 😊
আমাদের অ্যাপ যেভাবে কাজ করবে -
মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন