searchView
এই পর্বে আমরা দেখবো কিভাবে SearchView নিয়ে কাজ করতে হয় ।
লিস্টভিউ এর সাহায্যে আমরা সার্চভিউ তৈরি করবো । তো চলুন শুরু করা যাক । প্রথমেই লেআউট ডিজাইনটা করে ফেলি । লেআউট এ একটি সার্চভিউ ও আরেকটি লিস্টভিউ রাখবো ।
activity_main.xml -
MainActivity.java -
এই কোডে সার্চভিউ এর জন্য শুধু সার্চভিউ এর অব্জেক্ট তৈরি করে সেটা লেআউট ফাইলে ফাইন্ড করে নিলাম । বাকি সব লিস্টভিউ তৈরি করার জন্য যা আমরা How to make ListView এই পর্বেই শিখে আসছি তাই আবার বর্ণনা করলাম নাহ ।
এবার সার্চভিউ তে ইউজার কোন ইনপুট দেয়ার সময় যে কাজ করবে তা একটি বিল্ড ইন ম্যাথডের ভিতরে লিখে দিতে হবে । ম্যাথডটি হলো -
setOnQueryTextListener এর onQueryTextChange এর ভিতরে আমরা আমাদের লিস্টভিউ তে থাকা ডাটাগুলো খুঁজবো । কারন প্রতি ইনপুটের জন্য নতুনভাবে Query করবে । ইউজার এর ইনপুট টা onQueryTextChange এর প্যারামিটার হিসেবে থাকা s এ চলে আসবে । তো আমাদের ডাটাগুলো adapter এর ভিতরে আছে , সেখান থেকে ইউজার এর ইনপুট অনুযায়ী ফিল্টার করলাম ।
এবার আপনার অ্যাপটি রান করে দেখুন 😊😊😊
ফিল্টার করার পর কোন কিছু করতে চাইলে সেজন্য লিস্টভিউ এর লিসেনার তৈরি করে নিবেন । সেটাও দেয়া হল ।
MainActivity.java-
অ্যাপটি দেখতে যেরকম হয়েছে -
অ্যাপের থিম স্টাইলে NoActionBar থাকায় একশন বার দেখাচ্ছে নাহ 😊😊😊
লিস্টভিউ এর সাহায্যে আমরা সার্চভিউ তৈরি করবো । তো চলুন শুরু করা যাক । প্রথমেই লেআউট ডিজাইনটা করে ফেলি । লেআউট এ একটি সার্চভিউ ও আরেকটি লিস্টভিউ রাখবো ।
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 থাকায় একশন বার দেখাচ্ছে নাহ 😊😊😊
মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন