के बाद रीफ्रेश नहीं करता है इसलिए मेरे पास कस्टम ArrayAdapter
है इसलिए मैं शीर्षक/उपशीर्षक दृश्य का उपयोग कर सकता हूं जो ListView
पर उपलब्ध है। मेरे पास EditText
है जो एक स्ट्रिंग स्वीकार करता है और एडाप्टर फ़िल्टर करता है।एंड्रॉइड कस्टम ऐरेएडाप्टर फ़िल्टर
फिल्टर अर्थ है कि यह सही वस्तुओं फ़िल्टर कर रही है में काम करता है (मैं उस पर क्लिक करके बता सकते हैं और यह सही "अतिरिक्त" के साथ आशय शुरू होता है।)
हालांकि भी फ़िल्टर कार्यप्रणाली हालांकि, एडाप्टर में आइटम सही जानकारी प्रदर्शित करने के लिए अद्यतन नहीं हैं ... शीर्षक और उपशीर्षक गलत हैं।
मान लें कि हमारे पास ListView
पर 0 से 9 आइटम हैं, मैं एक खोज के साथ 3 आइटम फ़िल्टर करता हूं, और कहता हूं कि फ़िल्टर किए गए आइटम 5, 6, 9 हैं ... 3 आइटम प्रदर्शित होते हैं, लेकिन यह पहला 3 है मूल प्री-सर्च ListView
(0-2) के आइटम। यदि मैं आइटम 2 (तीसरा आइटम) पर क्लिक करता हूं, तो 9 की सामग्री नए इरादे में निहित है। यह खोज मानदंडों के लिए सही है, हालांकि शीर्षक ने सही जानकारी को प्रतिबिंबित किया है।
मुझे यकीन नहीं है कि मुझे ListView
को ताज़ा करने के लिए क्या कहना है। मुझे नहीं लगता कि इसकी notifyDataSetChanged();
किसी भी मदद की सराहना की जाती है। धन्यवाद!
public class myListAdapter extends ArrayAdapter<Pizza>{
private ArrayList<Pizza> items;
private PizzaViewHolder myListHolder;
private class PizzaViewHolder{
TextView title;
TextView subtitle;
}
public myListAdapter(Context context, int textViewResourceId, ArrayList<Pizza> items) {
super(context, textViewResourceId, items);
this.items = items;
// TODO Auto-generated constructor stub
}
@Override
public View getView(int pos, View convertView, ViewGroup parent){
View v = convertView;
if(v == null){
LayoutInflater vi = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.myList_item, null);
myListHolder = new PizzaViewHolder();
myListHolder.title = (TextView)v.findViewById(R.id.title);
myListHolder.subtitle = (TextView)v.findViewById(R.id.subtitle);
v.setTag(myListHolder);
}else myListHolder = (PizzaViewHolder)v.getTag();
Pizza myList = items.get(pos);
if (myList != null){
myListHolder.title.setText(myList.getTitle());
myListHolder.subtitle.setText(myList.getSubTitle());
}
return v;
}
}
इस खोज
private TextWatcher filterTextWatcher = new TextWatcher(){
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
if(!s.equals("")){
((Filterable) this.listView1.getAdapter()).getFilter().filter(s);
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
};
एक मानक एडाप्टर का उपयोग करना ठीक काम करता है, अधिसूचना का उपयोग करने की आवश्यकता नहीं हैडेटासेट चेंज किया गया, मेरा कस्टम एडाप्टर –