Filtro no Android está tomando a posição errada
Eu estou tentando classificar a lista por EditText usando filtro no adaptador.
O filtro está processando bem, mas a posição do clique listview é sempre constante.
Ou seja, ListView está recebendo filtro, mas após a seleção do item, ele está assumindo a mesma posição na exibição de lista.
O FirstScreen é assim e quando a Albânia é selecionada, a Albânia é exibida corretamente, mas quando após a classificação, o behrain é selecionado e a mesma albânia é exibida, uma vez que a poição é 0 na lista, para corrigir esse problema.
Alguns dos códigos no adaptador são:
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@SuppressWarnings("unchecked")
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
country_inf = (ArrayList<CustomCountryCodesPojo>) results.values;
notifyDataSetChanged();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
ArrayList<CustomCountryCodesPojo> FilteredArrayNames = new ArrayList<CustomCountryCodesPojo>();
if (mOriginalNames == null) {
mOriginalNames = new ArrayList<CustomCountryCodesPojo>(
country_inf);
}
if (constraint == null || constraint.length() == 0) {
results.count = mOriginalNames.size();
results.values = mOriginalNames;
} else {
constraint = constraint.toString().toLowerCase();
for (int i = 0; i < mOriginalNames.size(); i++) {
CustomCountryCodesPojo dataNames = mOriginalNames
.get(i);
if (dataNames.countryName.toString().toLowerCase()
.contains(constraint.toString())) {
FilteredArrayNames.add(dataNames);
}
}
results.count = FilteredArrayNames.size();
// System.out.println(results.count);
results.values = FilteredArrayNames;
// Log.e("VALUES", results.values.toString());
}
return results;
}
};
return filter;
}
Meu problema é que no item da lista clique depois de alguma pesquisa sua tirando da primeira posição
O código de clique do ListView é
lv_list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Intent i = new Intent();
i.putExtra("flagId", flagId);
i.putExtra("name", allRecords.get(arg2).countryName);
setResult(RESULT_OK, (i).setAction("ok"));
finish();
}
});