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.