Я пытаюсь отсортировать список по EditText, используя фильтр в адаптере.
Фильтр обрабатывается хорошо, но позиция щелчка по списку всегда постоянна.
то есть ListView получает фильтр, но после выбора элемента он занимает ту же позицию в представлении списка.
Первый экран выглядит так, и когда при выборе албании албания отображается правильно, но когда после сортировки выбирается behrain, и отображается та же албания, поскольку в списке отображается позиция 0, как исправить эту проблему.
Часть кода в адаптере:
@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;
}
Моя проблема в том, что в элементе списка нажмите после некоторого поиска, который он берет с первой позиции
Код клика 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();
}
});
i.putExtra("flagId", flagId); i.putExtra("name", allRecords.get(arg2).countryName);
. Верно? - person Nizam   schedule 16.11.2013