यह उदाहरण दर्शाता है कि Android पर एक SearchView के साथ RecyclerView को कैसे फ़िल्टर किया जाए।
चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें।
चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें।
चरण 3 - निम्न कोड को src/MainActivity.java
में जोड़ें <पूर्व>पैकेज com.app.sample;import android.os.Bundle;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.inputmethod.EditorInfo;import android. विजेट.SearchView;आयात androidx.appcompat.app.AppCompatActivity;import androidx.recyclerview.widget.LinearLayoutManager;import androidx.recyclerview.widget.RecyclerView;import java.util.ArrayList;import java.util.List;सार्वजनिक वर्ग MainActivity AppCompatActivity को बढ़ाता है {निजी उदाहरण एडेप्टर एडाप्टर; निजी सूची<उदाहरणआइटम>उदाहरणसूची; @Override संरक्षित शून्य पर क्रिएट (बंडल सेव किया गया इंस्टेंसस्टेट) {super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); fillExampleList (); सेटअप रीसाइक्लर व्यू (); } निजी शून्य fillExampleList() { exampleList =नया ArrayList<>(); exampleList.add(नया exampleItem(R.drawable.ic_android, "One", "Ten")); exampleList.add(नया exampleItem(R.drawable.ic_audio, "दो", "ग्यारह")); exampleList.add(नया exampleItem(R.drawable.ic_sun, "तीन", "बारह")); exampleList.add(नया exampleItem(R.drawable.ic_android, "चार", "तेरह")); exampleList.add(नया exampleItem(R.drawable.ic_audio, "पांच", "चौदह")); exampleList.add(नया exampleItem(R.drawable.ic_sun, "सिक्स", "फिफ्टीन")); exampleList.add(नया exampleItem(R.drawable.ic_android, "सात", "सोलह")); exampleList.add(नया exampleItem(R.drawable.ic_audio, "आठ", "सत्रह")); exampleList.add (नया exampleItem (R.drawable.ic_sun, "नौ", "अठारह")); } निजी शून्य setUpRecyclerView() { RecyclerView recyclerView =findViewById(R.id.recycler_view); recyclerView.setHasFixedSize (सच); RecyclerView.LayoutManager लेआउटमैनेजर =नया LinearLayoutManager(यह); एडेप्टर =नया उदाहरण एडेप्टर (उदाहरण सूची); recyclerView.setLayoutManager(layoutManager); recyclerView.setAdapter (एडाप्टर); } @CreatOptionsMenu (मेनू मेनू) पर सार्वजनिक बूलियन को ओवरराइड करें { MenuInflater inflater =getMenuInflater (); inflater.inflate(R.menu.example_menu, मेनू); MenuItem searchItem =menu.findItem(R.id.action_search); SearchView searchView =(SearchView) searchItem.getActionView (); searchView.setImeOptions(EditorInfo.IME_ACTION_DONE); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {@Override public boolean onQueryTextSubmit(String query) { return false; } @Override public boolean onQueryTextChange(String newText) {Adapter.getFilter().filter(newText); झूठी वापसी; } }); सच लौटना; }}पूर्व>चरण 4 - निम्न कोड को src/ExampleItem.java
में जोड़ें <पूर्व>पैकेज com.app.sample;सार्वजनिक वर्ग exampleItem {निजी int imageResource; निजी स्ट्रिंग टेक्स्ट1; निजी स्ट्रिंग टेक्स्ट 2; सार्वजनिक उदाहरण इटैम (इंट इमेज रिसोर्स, स्ट्रिंग टेक्स्ट 1, स्ट्रिंग टेक्स्ट 2) { यह। इमेज रिसोर्स =इमेज रिसोर्स; यह। टेक्स्ट 1 =टेक्स्ट 1; यह। टेक्स्ट 2 =टेक्स्ट 2; } सार्वजनिक int getImageResource() {वापसी imageResource; } सार्वजनिक स्ट्रिंग getText1 () {वापसी text1; } सार्वजनिक स्ट्रिंग getText2 () {वापसी text2; }}पूर्व>चरण 5 - निम्न कोड को src/ExampleAdapter.java
में जोड़ें <पूर्व>पैकेज com.app.sample;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Filter;import android.widget.Filterable;import android.widget. ImageView;import android.widget.TextView;import androidx.annotation.NonNull;import androidx.recyclerview.widget.RecyclerView;import java.util.ArrayList;import java.util.List;सार्वजनिक वर्ग का उदाहरण एडेप्टर रीसाइक्लर व्यू.एडाप्टर का विस्तार करता है।फ़िल्टर करने योग्य लागू करता है {निजी सूची exampleList; निजी सूची exampleListFull; क्लास exampleViewHolder RecyclerView.ViewHolder को बढ़ाता है {ImageView imageView; टेक्स्ट व्यू टेक्स्ट व्यू 1; टेक्स्ट व्यू टेक्स्ट व्यू 2; उदाहरण व्यूहोल्डर (आइटम व्यू देखें) {सुपर (आइटम व्यू); imageView =itemView.findViewById (R.id.image_view); textView1 =itemView.findViewById (R.id.text_view1); textView2 =itemView.findViewById (R.id.text_view2); } } उदाहरण एडेप्टर (सूची <उदाहरणआइटम> उदाहरण सूची) { this.exampleList =exampleList; exampleListFull =नया ArrayList<>(exampleList); } @NonNull @Override public exampleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { देखें v =LayoutInflater.from(parent.getContext()).inflate(R.layout.example_item, पैरेंट, असत्य); नया उदाहरण व्यूहोल्डर (v) लौटाएं; } @Override सार्वजनिक शून्य onBindViewHolder(@NonNull exampleViewHolder धारक, int स्थिति) {exampleItem currentItem =exampleList.get(position); Holder.imageView.setImageResource (currentItem.getImageResource ()); धारक.textView1.setText (currentItem.getText1 ()); Holder.textView2.setText (currentItem.getText2 ()); } @ ओवरराइड सार्वजनिक int getItemCount () {वापसी exampleList.size (); } @ ओवरराइड पब्लिक फ़िल्टर getFilter() {वापसी exampleFilter; } निजी फ़िल्टर उदाहरणफ़िल्टर =नया फ़िल्टर () {@Override संरक्षित फ़िल्टर परिणाम प्रदर्शनफ़िल्टरिंग (चार अनुक्रम बाधा) { सूची <उदाहरणआइटम> फ़िल्टर की गई सूची =नई ऐरेलिस्ट <> (); अगर (बाधा ==शून्य || बाधा। लंबाई () ==0) {filteredList.addAll (exampleListFull); } और {स्ट्रिंग फ़िल्टरपैटर्न =बाधा। toString ()। toLowerCase ()। ट्रिम (); के लिए (ExampleItem आइटम:exampleListFull) {if (item.getText2().toLowerCase().contains(filterPattern)) {filteredList.add(item); } } } FilterResults results =new FilterResults(); results.values =फ़िल्टर्डलिस्ट; वापसी के परिणाम; } @ ओवरराइड संरक्षित शून्य प्रकाशित परिणाम (चार अनुक्रम बाधा, फ़िल्टर परिणाम परिणाम) { exampleList.clear (); exampleList.addAll ((सूची) परिणाम। मान); सूचित करेंडेटासेट चेंज (); } };}
चरण 6 - निम्नलिखित कोड को res/layout/example_item.xml
. में जोड़ेंचरण 7 - निम्नलिखित कोड को res/menu/example_menu.xml
. में जोड़ें<मेनू xmlns:android="https://schemas.android.com/apk/res/android" xmlns:app="https://schemas.android.com/apk/res-auto" एंड्रॉइड:ओरिएंटेशन ="वर्टिकल" एंड्रॉइड:लेआउट_विड्थ ="मैच_पेरेंट" एंड्रॉइड:लेआउट_हाइट ="मैच_पेरेंट"> <आइटम एंड्रॉइड:आईडी ="@ + आईडी / एक्शन सर्च" एंड्रॉइड :title="Search" ऐप:showAsAction="ifRoom|collapseActionView" />
चरण 8 - मेनिफेस्ट/AndroidManifest.xml
में निम्न कोड जोड़ें<एप्लिकेशन एंड्रॉइड:अनुमति बैकअप ="सच" एंड्रॉइड:आइकन ="@ मिपमैप / आईसी_लॉन्चर" एंड्रॉइड:लेबल ="@ स्ट्रिंग / ऐप_नाम" एंड्रॉइड:राउंडआईकॉन ="@ मिपमैप / आईसी_लॉन्चर_राउंड" एंड्रॉइड:सपोर्ट आरटीएल ="सच" एंड्रॉइड :theme="@style/AppTheme"> <गतिविधि android:name=".MainActivity"> <इरादे-फ़िल्टर> <कार्रवाई android:name="android.intent.action.MAIN" /> <श्रेणी android:name=" android.intent.category.LAUNCHER" />
आइए अपना एप्लिकेशन चलाने का प्रयास करें। मुझे लगता है कि आपने अपने वास्तविक Android मोबाइल डिवाइस को अपने कंप्यूटर से कनेक्ट कर लिया है। एंड्रॉइड स्टूडियो से ऐप चलाने के लिए, अपने प्रोजेक्ट की गतिविधि फ़ाइलों में से एक खोलें और टूलबार से रन आइकन पर क्लिक करें। एक विकल्प के रूप में अपने मोबाइल डिवाइस का चयन करें और फिर अपने मोबाइल डिवाइस की जांच करें जो आपकी डिफ़ॉल्ट स्क्रीन प्रदर्शित करेगा -