2014-12-23 3 views
1

Я успешно реализовал проект open source AndroidCountryPicker от github. этот: https://github.com/roomorama/AndroidCountryPicker. Теперь я хотел бы привести США, Гонконг и Канаду в начало списка. Таким образом, пользователю не нужно постоянно искать, и они будут наиболее полезными. Кто-нибудь знает, как это возможно.android countryPicker от github, приведите страны в начало

Благодаря

+0

Вам нужно будет реализовать что-то свое для этого, но есть что-то для реализации недавняя история поиска поиск. http://developer.android.com/guide/topics/search/adding-recent-query-suggestions.html –

+0

@ XH6user Реализация истории поиска не является полезной, выбор, надеюсь, будет выбран только один раз пользователем, и то они не увидели бы это снова. Я понимаю, что мне нужно было бы реализовать что-то свое, но я надеялся на какое-то направление, где искать или начинать реализацию. – johntzan

ответ

1

Я думаю, вам нужно будет изменить код библиотеки для достижения этой цели. Код, ответственный за загрузку и сортировку стран, - this (at 23 Dec 14).

Вы можете игнорировать эти три страны, а затем добавить их после сортировки массива (предположим, что вы хотите, чтобы все остальные появляться заказано):

Country US, HK, CA; 
US = HK = CA = null; 
while (keys.hasNext()) { 
    String key = (String) keys.next(); 
    Country country = new Country(); 
    country.setCode(key); 
    country.setName(jsonObject.getString(key)); 
    switch(key) { 
     case "US": US = country; break; 
     case "HK": HK = country; break; 
     case "CA": CA = country; break; 
     default: allCountriesList.add(country); 
    } 
} 

Collections.sort(allCountriesList, this); 
allCountriesList.add(0, CA); 
allCountriesList.add(0, HK); 
allCountriesList.add(0, US); 

Если вы используете Java 6 или старше вам нужно будет заменить переключатель с if/else.

EDIT: В случае, если кто хочет изменить данные стран, она хранится в большой строке JSON (закодированной в base64) в res/values/strings_countries.xml. Так что его нужно декодировать, изменять, а затем снова закодировать (что-то вроде base64decode.org или base64 команда будет делать трюк)

+0

Вау, это сработало именно так, как я хотел, спасибо большое @ Салем! просто хотел добавить, что страна США, HK, CA должна быть инициализирована или затмение говорит об ошибке. – johntzan

+0

@Yianni Вы правы. Эти вары будут инициализированы в любом случае, но компилятор не знает этого. Исправлена. – Salem

+0

эй @ Салем, любая идея, как я могу добавить код страны номер страны рядом с каждой страной. как США +1, Гонконг + 852 .. для каждого. Любая помощь будет принята с благодарностью. благодаря – johntzan