Нет результатов / пустой listView при фильтрации через listView с помощью editText - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь фильтровать свой 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 не знает, какую позицию записи нужно фильтровать.

Любая помощь приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...