searchView

এই পর্বে আমরা দেখবো কিভাবে SearchView নিয়ে কাজ করতে হয় ।


 লিস্টভিউ এর সাহায্যে আমরা সার্চভিউ  তৈরি করবো । তো চলুন শুরু করা যাক । প্রথমেই লেআউট ডিজাইনটা করে ফেলি । লেআউট এ একটি সার্চভিউ ও আরেকটি লিস্টভিউ রাখবো ।

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.splashscreen.MainActivity">  
   <SearchView  
     android:id="@+id/search"  
     android:layout_width="match_parent"  
     android:layout_height="wrap_content"  
     android:queryHint="Find Your Friends"></SearchView>  
   <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;  
   private SearchView searchView;  
   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_main);  
     listView = findViewById(R.id.listView);  
     searchView = findViewById(R.id.search);  
     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);  

এই কোডে সার্চভিউ এর জন্য শুধু সার্চভিউ এর অব্জেক্ট তৈরি করে সেটা লেআউট ফাইলে ফাইন্ড করে নিলাম ।  বাকি সব লিস্টভিউ তৈরি করার জন্য যা আমরা How to make ListView এই পর্বেই শিখে আসছি তাই আবার বর্ণনা করলাম নাহ ।

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

 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;  
       }  
     });  

setOnQueryTextListener এর onQueryTextChange এর ভিতরে আমরা আমাদের লিস্টভিউ তে থাকা ডাটাগুলো খুঁজবো । কারন প্রতি ইনপুটের জন্য নতুনভাবে Query করবে । ইউজার এর ইনপুট টা onQueryTextChange এর প্যারামিটার হিসেবে থাকা  s  এ চলে আসবে । তো আমাদের ডাটাগুলো adapter এর ভিতরে আছে , সেখান থেকে ইউজার এর ইনপুট অনুযায়ী ফিল্টার করলাম ।

এবার আপনার অ্যাপটি রান করে দেখুন 😊😊😊

ফিল্টার করার পর কোন কিছু করতে চাইলে সেজন্য লিস্টভিউ এর লিসেনার তৈরি করে নিবেন । সেটাও দেয়া হল ।

MainActivity.java-

 package com.example.user.splashscreen;  
 import android.support.v7.app.AppCompatActivity;  
 import android.os.Bundle;  
 import android.view.View;  
 import android.widget.Adapter;  
 import android.widget.AdapterView;  
 import android.widget.ArrayAdapter;  
 import android.widget.ListView;  
 import android.widget.SearchView;  
 import android.widget.Toast;  
 public class MainActivity extends AppCompatActivity {  
   ListView listView;  
   String[] country_name;  
   ArrayAdapter<String> adapter;  
   private SearchView searchView;  
   @Override  
   protected void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.activity_main);  
     listView = findViewById(R.id.listView);  
     searchView = findViewById(R.id.search);  
     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);  
     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;  
       }  
     });  
     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();  
       }  
     });  
   }  
 }  

অ্যাপটি দেখতে যেরকম হয়েছে -

অ্যাপের থিম স্টাইলে NoActionBar থাকায় একশন বার দেখাচ্ছে নাহ  😊😊😊

মন্তব্যসমূহ

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

Spinner View - 11 ( Android Bangla Tutorial)

ImageView ( Android Bangla Tutorial - )

Toggle Button - 10 ( Android Bangla Tutorial)