दिलचस्प पोस्ट
स्क्रीन को खाली करने के लिए जावा में कमांड फ़ायरफ़ॉक्स में फ्लेक्स आइटम पर पैडिंग / मार्जिन का प्रतिशत क्यों नहीं है? Log4j लॉगगर प्रोग्रामिंग को कॉन्फ़िगर करना इस ब्लॉक में दृढ़ता से आत्म-कब्जा करने से एक बनाए रखने के चक्र की संभावना हो सकती है कैसे प्रतिक्रिया में एक DOM तत्व तक पहुँचने के लिए? प्रतिक्रिया में document.getElementById () के समतुल्य क्या है कैसे जावास्क्रिप्ट में क्षेत्रों / कोड पतन लागू करने के लिए लूप के लिए खाली – के लिए (;;) सी ++ 11 के तहत वेक्टर :: रीसाइज (आकार_प्रकार एन) का यह व्यवहार और बूस्ट। कॉन्टैनेर सही है? getopt.h: विंडोज में लिनक्स सी-कोड संकलित करना उद्देश्य-सी: @ वर्ग डायरेक्टिव @ इंटरफेस से पहले? क्या संपादन योग्य तत्व की सामग्री को संशोधित करने का एक लचीला तरीका है? जावास्क्रिप्ट के साथ iframe src बदल रहा है रोलेन पर्यावरण.गेट कॉन्फ़िगरेशन सेटिंग वैल्यू ("MYKEY") को बुलाते समय मुझे SEHException क्यों मिल रहा है? कैसे सी में एक bitset को लागू करने के लिए? ओरेकल: सीएसवी फ़ाइल आयात करें

Android में कस्टम सूची दृश्य में खोज कार्यक्षमता का उपयोग कैसे करें

मैंने पंक्ति में एकाधिक आइटम के साथ एक सूची दृश्य बनाया है मैंने ऊपर एक खोज बॉक्स भी बनाया है मैं सूची के विशेष क्षेत्रों के आधार पर खोज कार्यक्षमता को लागू करना चाहता हूं। इसे कैसे प्राप्त किया जा सकता है? किसी भी तरह की सहायता को आभार समझेंगे।

वेब के समाधान से एकत्रित समाधान "Android में कस्टम सूची दृश्य में खोज कार्यक्षमता का उपयोग कैसे करें"

आपको इस के लिए फ़िल्टरिंग के साथ मॉडल, लिस्ट्यूव्यू और कस्टम एडैप्टर का उपयोग करना होगा। मैंने इसके लिए एक डेमो बनाया है, मान लीजिए आपके पास उत्पाद नामित एक मॉडल है, और आप अपनी सामग्री को एक कस्टम सूची दृश्य में प्रदर्शित कर रहे हैं जहां नाम, मूल्य पाठ दृश्य में प्रदर्शित किया जाता है। मेरा मतलब है कि दो पाठ दृश्य वाले कस्टम पंक्ति। और आप फ़िल्टर करना चाहते हैं कस्टम पंक्ति के क्षेत्र में से एक की सूची। यहां मैंने "नाम" के साथ फ़िल्टर्ड किया है

स्क्रीनशॉट:

प्रारंभिक

प्रारंभिक

छाना हुआ

छाना हुआ

सोर्स कोड

// यह आपका मॉडल है

public class Product { public String name; public Integer price; public Product(String name, Integer price) { super(); this.name = name; this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getPrice() { return price; } public void setPrice(Integer price) { this.price = price; } } 

// यह कस्टम एडाप्टर और listview के साथ आपकी गतिविधि है

 public class MainActivity extends Activity{ private LinearLayout llContainer; private EditText etSearch; private ListView lvProducts; private ArrayList<Product> mProductArrayList = new ArrayList<Product>(); private MyAdapter adapter1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initialize(); // Add Text Change Listener to EditText etSearch.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // Call back the Adapter with current character to Filter adapter1.getFilter().filter(s.toString()); } @Override public void beforeTextChanged(CharSequence s, int start, int count,int after) { } @Override public void afterTextChanged(Editable s) { } }); } private void initialize() { etSearch = (EditText) findViewById(R.id.etSearch); lvProducts = (ListView)findViewById(R.id.lvOS); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); mProductArrayList.add(new Product("a", 100)); mProductArrayList.add(new Product("b", 200)); mProductArrayList.add(new Product("c", 300)); mProductArrayList.add(new Product("d", 400)); mProductArrayList.add(new Product("e", 500)); mProductArrayList.add(new Product("f", 600)); mProductArrayList.add(new Product("g", 700)); mProductArrayList.add(new Product("h", 800)); mProductArrayList.add(new Product("i", 900)); mProductArrayList.add(new Product("j", 1000)); mProductArrayList.add(new Product("k", 1100)); mProductArrayList.add(new Product("l", 1200)); mProductArrayList.add(new Product("m", 1000)); mProductArrayList.add(new Product("n", 1300)); mProductArrayList.add(new Product("o", 1400)); mProductArrayList.add(new Product("p", 1500)); adapter1 = new MyAdapter(MainActivity.this, mProductArrayList); lvProducts.setAdapter(adapter1); } // Adapter Class public class MyAdapter extends BaseAdapter implements Filterable { private ArrayList<Product> mOriginalValues; // Original Values private ArrayList<Product> mDisplayedValues; // Values to be displayed LayoutInflater inflater; public MyAdapter(Context context, ArrayList<Product> mProductArrayList) { this.mOriginalValues = mProductArrayList; this.mDisplayedValues = mProductArrayList; inflater = LayoutInflater.from(context); } @Override public int getCount() { return mDisplayedValues.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } private class ViewHolder { LinearLayout llContainer; TextView tvName,tvPrice; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = inflater.inflate(R.layout.row, null); holder.llContainer = (LinearLayout)convertView.findViewById(R.id.llContainer); holder.tvName = (TextView) convertView.findViewById(R.id.tvName); holder.tvPrice = (TextView) convertView.findViewById(R.id.tvPrice); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.tvName.setText(mDisplayedValues.get(position).name); holder.tvPrice.setText(mDisplayedValues.get(position).price+""); holder.llContainer.setOnClickListener(new OnClickListener() { public void onClick(View v) { Toast.makeText(MainActivity.this, mDisplayedValues.get(position).name, Toast.LENGTH_SHORT).show(); } }); return convertView; } @Override public Filter getFilter() { Filter filter = new Filter() { @SuppressWarnings("unchecked") @Override protected void publishResults(CharSequence constraint,FilterResults results) { mDisplayedValues = (ArrayList<Product>) results.values; // has the filtered values notifyDataSetChanged(); // notifies the data with new filtered values } @Override protected FilterResults performFiltering(CharSequence constraint) { FilterResults results = new FilterResults(); // Holds the results of a filtering operation in values ArrayList<Product> FilteredArrList = new ArrayList<Product>(); if (mOriginalValues == null) { mOriginalValues = new ArrayList<Product>(mDisplayedValues); // saves the original data in mOriginalValues } /******** * * If constraint(CharSequence that is received) is null returns the mOriginalValues(Original) values * else does the Filtering and returns FilteredArrList(Filtered) * ********/ if (constraint == null || constraint.length() == 0) { // set the Original result to return results.count = mOriginalValues.size(); results.values = mOriginalValues; } else { constraint = constraint.toString().toLowerCase(); for (int i = 0; i < mOriginalValues.size(); i++) { String data = mOriginalValues.get(i).name; if (data.toLowerCase().startsWith(constraint.toString())) { FilteredArrList.add(new Product(mOriginalValues.get(i).name,mOriginalValues.get(i).price)); } } // set the Filtered result to return results.count = FilteredArrList.size(); results.values = FilteredArrList; } return results; } }; return filter; } } } 

// यह आपकी activity_main.xml है

  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/etSearch" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <ListView android:id="@+id/lvProducts" android:layout_width="fill_parent" android:layout_height="wrap_content" ></ListView> </LinearLayout> 

// यह आपकी row.xml है

  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/llContainer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:id="@+id/tvName" android:layout_width="0dp" android:layout_height="wrap_content" android:singleLine="true" android:layout_weight="1" /> <TextView android:id="@+id/tvPrice" android:layout_width="0dp" android:layout_height="wrap_content" android:singleLine="true" android:layout_weight="1" /> </LinearLayout> 

इसके लिए, आपको पहले एक एडिटेक्ट जोड़ना होगा, जहां आप सूची से डेटा फ़िल्टर करने के लिए टाइप करेंगे,

तो सूची में फ़िल्टरिंग सक्षम करें,

 editText = (EditText) findViewById(R.id.searchList); adapter = new CustomListViewAdapter(this, R.layout.list_row, rowItems); listView.setAdapter(adapter); listView.setTextFilterEnabled(true); 

फिर आपको एडिक्टिक्ट के लिए टेक्स्ट चेंज लिस्टनर TextChangeListener() जोड़ना होगा,

 editText.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } public void afterTextChanged(Editable arg0) { MyActivityName.this.adapter.getFilter().filter(arg0); } }); 

नीचे विधि का उपयोग करें

 your edit text box.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable theWatchedText) { } }); } 

आप अपने खोज बॉक्स के लिए एक TextWatcher सेट कर सकते हैं और TextWatcher पर नीचे दिए गए कोड की तरह अपने कर्सर को onTextChanged () पर बदल सकते हैं:

 TextWatcher filterNameTextWatcher = new TextWatcher() public void beforeTextChanged(CharSequence s, int start, int count,int after) { } public void onTextChanged(CharSequence s,int start, int before,int count) { Cursor FilteredNameList = ZoneCardDBAdapter.instance.CursorFilteredName(s.toString()); Listadapter.changeCursor(FilteredNameList); } @Override public void afterTextChanged(Editable arg0) { } }; EditText filterTextName = (EditText)this.findViewById(R.id.edtZoneCardNameFilter); filterTextCPName.addTextChangedListener(filterNameTextWatcher);