Android: Wyszukiwanie z dużego arraylisty

Mam rekord z około 29 000 rekordów. Mój ekran zawiera pole edycji tekstu dla kryteriów wyszukiwania i widoku listy zawierające wszystkie 29 000 rekordów.

Wyszukiwanie za pomocą wymienionego sposobu wymaga czasu i nie daje przepływu mniejszej mocy niż potrzebuję.

Mój tekst edycji zawiera

<code>final EditText txtSearchCity = (EditText) findViewById(R.id.edtCity);
        txtSearchCity.addTextChangedListener(new TextWatcher() {
            @Override
            public void afterTextChanged(Editable s) {
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                aCountryIDTemp.clear();
                aCityStateTemp.clear();

                for (int i = 0; i < aCountryID.size(); i++) {
                    if (aCityState
                            .get(i)
                            .toLowerCase()
                            .contains(
                                    txtSearchCity.getText().toString()
                                            .toLowerCase())) {
                        aCountryIDTemp.add(aCountryID.get(i));
                        aCityStateTemp.add(aCityState.get(i));
                    }
                }

                BindList();
            }
        });
    }
</code>

Metoda BindList () ustawia arraylistę aCityStateTemp na adapter. Dowolny inny sposób dynamicznego wyszukiwania i tworzenia nowej tablicy ArrayList.

questionAnswers(4)

yourAnswerToTheQuestion