Dans mon Listview
, je reçois du texte et de l'image et ils sont stockés dans ArrayList
.BaseAdapter Listview Filtrage Android
J'utilise BaseAdapter
pour afficher la liste.
Je souhaite utiliser filter
dans la liste en fonction du texte tapé en EditText
, mais ne fonctionne pas.
Mon code est: adv est EditText
adv.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
viewadapter.getFilter().filter(s);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
Et mes BaseAdapter
outils Filterable
si la méthode getFilter
dans ce qui est:
@Override
public Filter getFilter() {
// TODO Auto-generated method stub
if (mFilter == null) {
mFilter = new ArrayFilter();
}
return mFilter;
}
et mon ArrayFilter
est:
private class ArrayFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence prefix) {
FilterResults results = new FilterResults();
if (mNames == null) {
synchronized (mLock) {
mNames = new ArrayList<String>(mObjects);
}
}
if (prefix == null || prefix.length() == 0) {
synchronized (mLock) {
ArrayList<String> list = new ArrayList<String>(mNames);
results.values = list;
results.count = list.size();
}
} else {
String prefixString = prefix.toString().toLowerCase();
final ArrayList<String> values = mNames;
final int count = values.size();
final ArrayList<String> newValues = new ArrayList<String>(count);
for (int i = 0; i < count; i++) {
final String value = values.get(i);
final String valueText = value.toString().toLowerCase();
// First match against the whole, non-splitted value
if (valueText.startsWith(prefixString)) {
newValues.add(value);
} else {
final String[] words = valueText.split(" ");
final int wordCount = words.length;
for (int k = 0; k < wordCount; k++) {
if (words[k].startsWith(prefixString)) {
newValues.add(value);
break;
}
}
}
}
results.values = newValues;
results.count = newValues.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
//noinspection unchecked
mObjects = (List<String>) results.values;
if (results.count > 0) {
viewadapter.notifyDataSetChanged();
} else {
viewadapter.notifyDataSetInvalidated();
}
}
}
dans que mNames
est le ArrayList
avec lequel je veux filtrer le ListView
.
et également activé setTextFilterEnabled(true).
, mais le filtrage ne fonctionne pas.
Est-ce que cette approche est correcte? Qu'est-ce qui ne va pas? sinon, comment faire cela?
Avez-vous résoudre ce problème? Pourriez-vous nous donner un avis? –
Non, je n'ai pas été résolu, c'est que j'ai gardé ouvert !! Si vous avez eu, merci de poster ici Thanx – Udaykiran
comment vous avez sauvegardé du texte et de l'image dans ArrayList ??? –