/ / RecyclerView आइटम लेआउट अपडेट नहीं किया गया - Android, android-recyclerview

RecyclerView आइटम लेआउट अपडेट नहीं हुआ - Android, android-recyclerview

मैं RecyclerView के साथ पाठ संपादित कर रहा हूंउपयोगकर्ता द्वारा संपादित पाठ में कोई भी पाठ दर्ज करते समय RecylecerView को अपने आइटम और उसके दृश्य को अपडेट करना चाहिए। यह एक बहुत ही सामान्य आवश्यकता है और मैंने इसके लिए टन समाधान ढूंढ लिया है। लेकिन मुझे एक अजीब समस्या का सामना करना पड़ रहा है कि फ़िल्टर करने के बाद recylcerView सूची में गलत आइटम दिखा रहा है।
उदाहरण देकर स्पष्ट करने के लिए। मान लीजिए कि RecylcerView में आइटम हैंए, बी, सी, डी और ई। अगर मैं "c। सूची खोजता हूं तो केवल एक आइटम" a "दिखाता है। हालांकि जब मैं इस आइटम पर क्लिक करता हूं तो यह केवल" c "होता है। इसका मतलब है कि केवल लेआउट अपडेट नहीं हो रहा है लेकिन मान अपडेट नहीं मिलते हैं।
यहाँ मेरा कार्यान्वयन है।

public class CustomFilter extends Filter{
private CustomFilter(SListRecyclerViewAdapter mAdapter) {
super();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
sData.clear();
final FilterResults results = new FilterResults();
if (constraint.length() == 0) {
sData.addAll(filteredsData);
}
else {
final String filterPattern = constraint.toString().toLowerCase().trim();
for (final S surg: filteredsData) {
if (S.getSUserName().toLowerCase(Locale.getDefault()).contains(filterPattern)) {
sData.add(surg);
}
}
}
results.values = sData;
results.count = sData.size();
return results;
}

@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
notifyDataSetChanged();
}

उत्तर:

जवाब के लिए 0 № 1

कृपया नीचे दिया गया उदाहरण देखें, आपको परिणाम के साथ डेटा को अपडेट करना होगा। कृपया प्रयास करें

@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
mFilteredData = (ArrayList<String>) results.values;
notifyDataSetChanged();
}

जवाब के लिए 0 № 2

मैं नहीं क्यों यह इस तरह से काम कर रहा है। लेकिन मुझे चारों ओर एक काम मिल गया है। recyclerView.swapAdapter(sListRecyclerViewAdapter,false); यह मूल रूप से नए के साथ एडाप्टर को स्वैप कर रहा है लेकिन पहले के विचारों को पुनर्चक्रण करता है। यह बहुत अधिक इष्टतम नहीं है लेकिन कम से कम काम करने योग्य है।