Forget to sync on ui thread,

forget to sort streets.
This commit is contained in:
Pavol Zibrita 2011-02-02 23:49:29 +01:00
parent d5ca3f3961
commit 2d6f46e41e
4 changed files with 18 additions and 7 deletions

View file

@ -70,7 +70,7 @@ public interface RegionAddressRepository {
public void fillWithSuggestedStreets(String name, List<Street> streetsToFill); public void fillWithSuggestedStreets(String name, List<Street> streetsToFill);
public void fillWithSuggestedStreets(final String name, public void fillWithSuggestedStreets(final String name,
List<Street> streetsToFill, Collection<Street> streets, boolean onlyStartCheck); List<Street> streetsToFill, Collection<Street> sortedStreets, boolean onlyStartCheck);
public void fillWithSuggestedCities(String name, List<MapObject> citiesToFill, LatLon currentLocation); public void fillWithSuggestedCities(String name, List<MapObject> citiesToFill, LatLon currentLocation);

View file

@ -93,6 +93,14 @@ public class RegionAddressRepositoryBinary implements RegionAddressRepository {
fillWithSuggestedStreetsInCities(citiesToLook, name, streetsToFill); fillWithSuggestedStreetsInCities(citiesToLook, name, streetsToFill);
List<City> villages = file.getVillages(region); List<City> villages = file.getVillages(region);
fillWithSuggestedStreetsInCities(villages, name, streetsToFill); fillWithSuggestedStreetsInCities(villages, name, streetsToFill);
Collections.sort(streetsToFill, new Comparator<Street>() {
@Override
public int compare(Street object1, Street object2) {
String name1 = object1.getName(useEnglishNames);
String name2 = object2.getName(useEnglishNames);
return collator.compare(name1,name2);
}
});
} catch (IOException e) { } catch (IOException e) {
log.error("Disk operation failed" , e); log.error("Disk operation failed" , e);
} }

View file

@ -191,8 +191,15 @@ public abstract class SearchByNameAbstractActivity<T> extends ListActivity {
class NamesAdapter extends ArrayAdapter<T> { class NamesAdapter extends ArrayAdapter<T> {
private final List<T> list;
NamesAdapter(List<T> list) { NamesAdapter(List<T> list) {
super(SearchByNameAbstractActivity.this, R.layout.searchbyname_list, list); super(SearchByNameAbstractActivity.this, R.layout.searchbyname_list, list);
this.list = list;
}
public List<T> getList() {
return list;
} }
public View getView(int position, View convertView, ViewGroup parent) { public View getView(int position, View convertView, ViewGroup parent) {

View file

@ -38,15 +38,11 @@ public class SearchStreetByNameActivity extends SearchByNameAbstractActivity<Str
public List<Street> getObjects(String filter) { public List<Street> getObjects(String filter) {
NamesAdapter list = (NamesAdapter)getListAdapter(); NamesAdapter list = (NamesAdapter)getListAdapter();
boolean countrySearch = isCountrySearch(); boolean countrySearch = isCountrySearch();
boolean incremental = filter.startsWith(oldfilter) && oldfilter.length() > 0 && list.getCount() > 0; boolean incremental = filter.startsWith(oldfilter) && oldfilter.length() > 0 && !list.getList().isEmpty();
this.oldfilter = filter; this.oldfilter = filter;
List<Street> result = new ArrayList<Street>(); List<Street> result = new ArrayList<Street>();
if (incremental) { if (incremental) {
List<Street> streets = new ArrayList<Street>(); region.fillWithSuggestedStreets(filter,result,list.getList(),countrySearch);
for (int i = 0; i < list.getCount(); i++ ) {
streets.add((Street) list.getItem(i));
}
region.fillWithSuggestedStreets(filter,result,streets,countrySearch);
} else { } else {
if (!countrySearch) { if (!countrySearch) {
region.fillWithSuggestedStreets(postcode == null ? city : postcode, filter, result); region.fillWithSuggestedStreets(postcode == null ? city : postcode, filter, result);