Я фильтрую список, что он работает правильно. Но когда я нажимаю элемент отфильтрованного списка, он дает мне имя элемента в исходной позиции.Filtered Listview возвращает исходную позицию
Пример: элементов: А, В, С, D, E. Если я фильтр C, он возвращает только один элемент (C), но он показывает, потому что это положение 0.
Я был ищу информацию, но ни один из подобных вопросов не помог мне.
Это мой код:
final FilteredListviewAdapter adapter = new FilteredListviewAdapter(AddAgentProfile.this, android.R.layout.simple_list_item_1, arraymls);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
addProfile.setMLSId(mlslist.get(position).getId());
// THIS IS THE LINE THAT GIVES ME THE WRONG RESULT!!!
textmls.setText(mlslist.get(position).getName());
mls.setText("");
dialog.dismiss();
}
});
list.setAdapter(adapter);
final EditText filter = (EditText) inflated.findViewById(R.id.et_filter);
filter.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
adapter.getFilter().filter(s);
adapter.notifyDataSetChanged();
}
});
И FIlteredListViewAdapter:
public class FilteredListviewAdapter extends ArrayAdapter<String> {
ArrayList<String> list;
public FilteredListviewAdapter(Context context, int layout, ArrayList<String> array) {
super(context, layout, array);
list = array;
}
@Override
public String getItem(int position) {
return super.getItem(position);
}
}
Что я делаю неправильно?
Я пытался что потому что я вижу это в комментарии в другом вопросе, но он не работает. Если я поставлю это предложение, список не будет правильно фильтроваться. Я всегда получаю N первых элементов исходного списка (в зависимости от того, что я фильтрую). Если есть один элемент, который выполняет фильтр, тогда отображается элемент 0 исходного списка. Если есть 2 элемента, отображаются 2 первых элемента списка оргиналов. И так далее. – trumpetero