SearchView in Action

বেশীরভাগ অ্যাপেই সার্চভিউ একশন বার এ ইউজ করা হয় । সার্চভিউ কিভাবে ইউজ করবো তা গত পর্বেই দেখানো হইছে আবার কিভাবে মেন্যু ইউজ করতে হয় তাও Options Menu এই পর্বে দেখানো হইছে ।  আমরা এই পর্বে দেখবো কিভাবে এই দুইয়ের সংমিশ্রনে একশন বার এ সার্চভিউ ইউজ করতে পারি ।  গত পর্বে অ্যাপ থিম হিসেবে আমরা NoActionBar ব্যাবহার করেছিলাম এবার তাই থিম চেঞ্জ করে DarkActionBar দিয়ে দিলাম ।

তো এজন্য একটি লিস্টভিউ বানিয়ে নিন এবং তাতে কিছু ডাটা এড করে নিন । গত পর্বেও দেয়া আছে । আমরা আগেই শিখে আসছি মেন্যু তৈরি করতে menu নামে নতুন ডিরেক্টরি ফাইল খুলতে হয় ।

menu ফাইলে menu resource file খুললাম , নাম দিলাম menu_item

menu_item.xml -

 <?xml version="1.0" encoding="utf-8"?>  
 <menu xmlns:android="http://schemas.android.com/apk/res/android"  
   xmlns:app="http://schemas.android.com/apk/res-auto">  
   <item android:id="@+id/menuSearch"  
     android:title="Search"  
     app:actionViewClass="android.widget.SearchView"  
     android:icon="@drawable/search"  
     app:showAsAction="always"></item>  
 </menu>  

এখানে অবশ্যই actionViewClass টা লিখে দিতে হবে ।

 <?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.splashscreen.MainActivity">  
   <ListView  
     android:id="@+id/listView"  
     android:layout_width="match_parent"  
     android:layout_height="match_parent"  
     android:listSelector="@color/colorPrimary"></ListView>  
 </LinearLayout>  

লেআউট ফাইলে শুধুমাত্র লিস্টভিউ টা থাকবে ।

MainActivity.java -

 public class MainActivity extends AppCompatActivity {  
   ListView listView;  
   String[] country_name;  
   ArrayAdapter<String> adapter;  
   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_main);  
     listView = findViewById(R.id.listView);  
     country_name = getResources().getStringArray(R.array.country_name);  
     adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,country_name);  
     listView.setAdapter(adapter);  
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {  
       @Override  
       public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {  
         Toast.makeText(MainActivity.this, adapter.getItem(i), Toast.LENGTH_SHORT).show();  
       }  
     });  
   }  

পুরো কোডে লিস্টভিউ তে ডাটা এড করার কোড করা হইছে যা আমরা আগেই শিখে আসছি । এবার onCreate ম্যাথডের বাইরে মেন্যু তে ক্লিক করার কোড লেখবো -

   @Override  
   public boolean onCreateOptionsMenu(Menu menu) {  
     MenuInflater menuInflater = getMenuInflater();  
     menuInflater.inflate(R.menu.menu_item,menu);  
     MenuItem menuItem = menu.findItem(R.id.menuSearch);  
     SearchView searchView = (SearchView) menuItem.getActionView();  
     searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {  
       @Override  
       public boolean onQueryTextSubmit(String s) {  
         return false;  
       }  
       @Override  
       public boolean onQueryTextChange(String s) {  
         adapter.getFilter().filter(s);  
         return false;  
       }  
     });  
     return super.onCreateOptionsMenu(menu);  
   }  

MenuInflater এর মাধ্যমে মেন্যু টা নিয়ে আসলাম একশন বার এ । MenuItem এর মাধ্যমে ম্যাথডের ভিতরে প্যারামিটার হিসেবে আসা menu এর ভিতরে থাকা মেন্যুটি ফাইন্ড করলাম । এর আগে আমরা  switch-case ইউজ করেছি , কিন্তু এখানে যেহেতু একটি মেন্যু তাই switch-case আর ইউজ করলাম নাহ। এরপরে SearchView এর অব্জেক্ট তৈরি করে getActionView নিয়ে নিলাম যাতে আমি সার্চ আইকন টি কিল্ক করলে তাকে দেয়া নির্দেশনা অনুযায়ী কাজ করে । এবার setOnQueryTextListener দ্বারা ফিল্টার করলাম যা আমরা আগের পর্বেই শিখে আসছি ।

এবার অ্যাপটি রান করুন । তো এভাবেই আপনি একশন বার এ সার্চভিউ ইউজ করতে পারেন 😊😊😊

মন্তব্যসমূহ

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

Toggle Button - 10 ( Android Bangla Tutorial)

Spinner View - 11 ( Android Bangla Tutorial)

ImageView ( Android Bangla Tutorial - )