DatePicker

এই পর্বে আমরা দেখবো কিভাবে আমরা ক্যালেন্ডার থেকে ডেট নিয়ে কাজ করতে পারি ।
আমাদের ডিজাইনটা এরকম হবে যে একটি বাটনে ক্লিক করলে ক্যালেন্ডার দেখাবে । সেখান থেকে ডেট নিয়ে একটি টেক্সভিউতে ডেট দেখাবো । আমি এবারও ডিজাইন পার্ট নিয়ে আলোচনা করবো নাহ । ডিজাইন এর কোডগুলো বুঝতে আমার আগের ব্লগগুলো পড়ে আসার অনুরোধ রইলো । তো চলুন শুরু করা যাক -

 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 এ বসিয়ে দিলাম । এখানে আপনি যেভাবে ভ্যারিয়েবল গুলো বসাবেন ঠিক সেভাবেই ডেট টা দেখাবে 😊

আমাদের অ্যাপ যেভাবে কাজ করবে -





মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

Toggle Button - 10 ( Android Bangla Tutorial)

Spinner View - 11 ( Android Bangla Tutorial)

ImageView ( Android Bangla Tutorial - )