context menu

এই পর্বে আমরা দেখবো কিভাবে contextual Menu নিয়ে কাজ করতে পারি । আমরা কোন আইটেম এর উপর ২-১ সেকেন্ড প্রেস করে রাখে তাহলে contextual Menu শো করবে । contextual Menu শো করানোর দুটি উপায় আছে ।

১ - Floating Contextual Menu
২ - Contextual Action Bar

Floating Contextual Menu দ্বারা আমরা ১টি আইটেম-ই সিলেক্ট করতে পারি কিন্তু  Contextual Action Bar দ্বারা একাধিক আইটেম সিলেক্ট করা যায় ।

প্রথমে আমরা Floating Contextual Menu কিভাবে তৈরি করে সেটি দেখবো । তো চলুন Floating Contextual Menu এর মেন্যুগুলো তৈরি করা যাক । এ জন্য মেন্যু ডিরেক্টরি menu->New->menu resource file এর মাধ্যমে নতুন মেন্যু রিসোর্স ফাইল খুললাম । নাম দিলাম contextual_menu  ।

contextual_menu.xml  এ -

 <?xml version="1.0" encoding="utf-8"?>  
 <menu xmlns:android="http://schemas.android.com/apk/res/android">  
   <item  
     android:id="@+id/show_more"  
     android:title="@string/show_more"></item>  
   <item  
     android:id="@+id/Delete"  
     android:title="@string/delete"></item>  
   <item  
     android:id="@+id/edit"  
     android:title="@string/edit"></item>  
 </menu>  

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

Floating Contextual Menu আমরা অ্যাপের ভিতরে কোন ভিউ এর সাথে শো করাবো । তো এজন্য একটি লিস্টভিউ নেয়া যাক । যেখানে কতগুলো আইটেম এর ভিউ থাকছে, যাতে যেটি ইচ্ছা সেটি নিয়ে ইউজার কাজ করতে পারে ।

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">  
   <ListView  
     android:id="@+id/listView"  
     android:layout_width="match_parent"  
     android:layout_height="wrap_content"></ListView>  
 </LinearLayout>  

লিস্টভিউ নিলাম যেখানে কতগুল আইটেম আমরা ইউজারকে দেখাবো ।

MainActivity.java  তে -

 public class MainActivity extends AppCompatActivity {  
   ListView listView;  
   String[] country= {"Bangladesh","India","Pakistan","Srilanka","Afganiztan","Zimbabwe"};  
   ArrayAdapter<String> adapter;  

আমরা যেহেতু লিস্টভিউ নিয়ে কাজ করবো তাই লিস্টভিউ এর অব্জেক্ট তৈরি করলাম । এরপর লিস্টভিউ এর ভিতর যে লিস্ট দেখাবো সেটি তৈরি করলাম ( স্ট্রিং অ্যারে তে কতগুলো দেশের নাম নিলাম  ) ।  আমরা জানি লিস্টভিউ এর সাথে তার কম্পোনেন্ট সংযোগ করতে ArrayAdapter ব্যাবহার করতে হয় , তাই ArrayAdapter  এর অব্জেক্ট তৈরি করলাম ।


Floating Contextual Menu নিয়ে কাজ করতে যে ম্যাথড টি কল করতে হবে সেটি হল - onCreateContextMenu । আমরা জানি এটি onCreate ম্যাথডের বাইরে কল করতে হবে ।

   @Override  
   public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {  
     MenuInflater menuInflater = getMenuInflater();  
     menuInflater.inflate(R.menu.contextual_menu,menu);  
     super.onCreateContextMenu(menu, v, menuInfo);  
   }  

এখানে যে কাজগুলো হয়েছে সে সম্পর্কে আমরা আগের পর্বেই জেনে আসছি ।
onCreate ম্যাথডে -

   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_main);  
     listView = findViewById(R.id.listView);  

আমরা যে লিস্টভিউটি নিয়েছি সেটি সংযোগ করে দিলাম । আমরা এই লিস্টভিউ এর সাথে Contextual Menu দেখাবো , তাই লিস্টভিউ এর সাথে Contextual Menu রেজিস্টার করে নিতে হবে -

     registerForContextMenu(listView);  

রেজিস্টার করে নিলাম ।

     adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,country);  
     listView.setAdapter(adapter);  

আমরা শিখে আসছি ডাঁটার সাথে লেআউট সংযোগ করতে এডাপ্টর ব্যাবহার করা হয় । তাই ArrayAdapter তৈরি করে প্রথমে কোন Activity তে হবে সেটি, এরপর লেআউট টি কিভাবে হবে তা এবং সর্বশেষে যে ডাঁটাগুলো দেখাবে সেগুলোর সংযোগ করলাম ।

এরপর লিস্টভিউয়ের সাথে এডাপ্টর অব্জেক্ট সংযোগ করে দিলাম ।

এবার অ্যাপটি রান করে দেখুন  😊😊😊😊 এবং কোন আইটেম এর উপর ২-১ সেকেন্ড লং প্রেস করে রাখুন



MainActivity.java  ফুল কোড -

 package com.example.user.timepicker;  
 import android.app.DatePickerDialog;  
 import android.app.TimePickerDialog;  
 import android.support.v7.app.AppCompatActivity;  
 import android.os.Bundle;  
 import android.view.ContextMenu;  
 import android.view.Menu;  
 import android.view.MenuInflater;  
 import android.view.MenuItem;  
 import android.view.View;  
 import android.widget.ArrayAdapter;  
 import android.widget.Button;  
 import android.widget.DatePicker;  
 import android.widget.ImageView;  
 import android.widget.LinearLayout;  
 import android.widget.ListView;  
 import android.widget.TextView;  
 import android.widget.TimePicker;  
 import java.text.DateFormat;  
 import java.text.SimpleDateFormat;  
 import java.util.Calendar;  
 import java.util.Date;  
 public class MainActivity extends AppCompatActivity {  
   ListView listView;  
   String[] country= {"Bangladesh","India","Pakistan","Srilanka","Afganiztan","Zimbabwe"};  
   ArrayAdapter<String> adapter;  
   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_main);  
     listView = findViewById(R.id.listView);  
     registerForContextMenu(listView);  
     adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,country);  
     listView.setAdapter(adapter);  
   }  
   @Override  
   public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {  
     MenuInflater menuInflater = getMenuInflater();  
     menuInflater.inflate(R.menu.contextual_menu,menu);  
     super.onCreateContextMenu(menu, v, menuInfo);  
   }  
 }  



মন্তব্যসমূহ

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

Toggle Button - 10 ( Android Bangla Tutorial)

Spinner View - 11 ( Android Bangla Tutorial)

ImageView ( Android Bangla Tutorial - )