/ / Layout elemento RecyclerView non aggiornato - android, android-recyclerview

Layout degli oggetti di RecyclerView non aggiornato - android, android-recyclerview

Sto implementando Modifica testo con RecyclerViewdove RecylecerView dovrebbe aggiornare il suo elemento e la sua visualizzazione quando l'utente immette del testo nel testo di modifica. È un requisito molto comune e ho trovato tonnellate di soluzioni per questo. Ma sto affrontando uno strano problema che dopo aver filtrato recylcerView mostra l'elemento sbagliato nell'elenco.
Illustrare. supponiamo che RecylcerView contenga elementi comea, b, c, d ed e. se cerco "c. list mostra solo un elemento" a ". tuttavia quando clicco su questo elemento è solo" c "significa solo il layout non viene aggiornato tuttavia i valori vengono aggiornati.
Ecco la mia implementazione.

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();
}

risposte:

0 per risposta № 1

Si prega di vedere l'esempio di seguito, è necessario aggiornare i dati con il risultato

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

0 per risposta № 2

Non so perché funziona in questo modo. Ma ho trovato un modo per aggirare. recyclerView.swapAdapter(sListRecyclerViewAdapter,false); Fondamentalmente sta sostituendo l'adattatore con uno nuovo ma riciclando le viste precedenti. Non è molto ottimale ma almeno praticabile.