Я пытаюсь фильтровать свой listView, но как только я ввожу что-то в editText, listView становится пустым. Я знаю, что на этот вопрос уже много раз отвечали, и я довольно много исследовал, но не смог найти никакого решения, подходящего для моей проблемы. Возможно, я нашел его, но мой неопытный взгляд пролетел по нему.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView listView = findViewById(R.id.objectslist);
final EditText search = findViewById(R.id.searchbar);
listView.setTextFilterEnabled(true);
final ArrayList<String[]> ListOfObjects = new ArrayList<>();
arrayAdapter = new ArrayAdapter<String[]> (this, android.R.layout.simple_list_item_2, android.R.id.text1, ListOfObjects){
// code for subItem
@Override
public View getView(int position, View convertView, ViewGroup parent){
View view = super.getView(position, convertView, parent);
String[] entry = ListOfObjects.get(position);
TextView text1 = view.findViewById(android.R.id.text1);
TextView text2 = view.findViewById(android.R.id.text2);
text1.setText(entry[0]);
text2.setText(entry[1]);
return view;
}
};
listView.setAdapter(arrayAdapter);
//searchbar EditText
searchbar.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
MainActivity.this.arrayAdapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
// Adding new Objects to the listView
ListOfObjects.add(new String[] {"AAA", "A-Street"});
ListOfObjects.add(new String[] {"BBB","B-Street"});
ListOfObjects.add(new String[] {"CCC","C-Street"});
//sorting alphabetically
Collections.sort(ListOfObjects, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return o1[0].compareToIgnoreCase(o2[0]);
}
});
Помещение «.toString» в «s» в filter () не сработало, как и другие мои исследования ... Мое необразованное предположение заключалось в том, что проблема заключается где-то в item-subItem-listView, где textChangeListener не знает, какую позицию записи нужно фильтровать.
Любая помощь приветствуется!