1
1
package fr .free .nrw .commons .upload ;
2
2
3
3
import android .content .Context ;
4
- import android .content .res .Resources ;
5
4
import android .graphics .Color ;
6
5
import android .os .Build ;
7
6
import android .support .annotation .NonNull ;
15
14
import android .widget .TextView ;
16
15
17
16
import java .util .ArrayList ;
18
- import java .util .Arrays ;
17
+ import java .util .Collections ;
19
18
import java .util .List ;
20
19
import java .util .Locale ;
21
20
@@ -42,23 +41,18 @@ public SpinnerLanguagesAdapter(@NonNull Context context,
42
41
this .layoutInflater = LayoutInflater .from (context );
43
42
languageNamesList = new ArrayList <>();
44
43
languageCodesList = new ArrayList <>();
45
- prepareLanguages (context );
44
+ prepareLanguages ();
46
45
this .selectedLanguages = selectedLanguages ;
47
46
}
48
47
49
- private void prepareLanguages (Context context ) {
50
- Resources resources = context .getResources ();
48
+ private void prepareLanguages () {
51
49
List <Language > languages = getLocaleSupportedByDevice ();
52
50
53
51
for (Language language : languages ) {
54
- languageNamesList .add (language .getLocale ().getDisplayName ());
55
- languageCodesList .add (language .getLocale ().getDisplayScript ());
56
- }
57
- for (int i = 0 ; i < languages .size (); i ++) {
58
- languageNamesList .add (resources .getString (Language .languageGroups [i ]));
59
- languageCodesList .add ("" );
60
- languageNamesList .addAll (Arrays .asList (resources .getStringArray (Language .languageNames [i ])));
61
- languageCodesList .addAll (Arrays .asList (resources .getStringArray (Language .languageCodes [i ])));
52
+ if (!languageCodesList .contains (language .getLocale ().getLanguage ())) {
53
+ languageNamesList .add (language .getLocale ().getDisplayName ());
54
+ languageCodesList .add (language .getLocale ().getLanguage ());
55
+ }
62
56
}
63
57
}
64
58
@@ -68,6 +62,9 @@ private List<Language> getLocaleSupportedByDevice() {
68
62
for (Locale locale : localesArray ) {
69
63
languages .add (new Language (locale ));
70
64
}
65
+
66
+ Collections .sort (languages , (language , t1 ) -> language .getLocale ().getDisplayName ()
67
+ .compareTo (t1 .getLocale ().getDisplayName ()));
71
68
return languages ;
72
69
}
73
70
@@ -146,11 +143,11 @@ public void init(int position, boolean isDropDownView) {
146
143
}
147
144
}
148
145
149
- public String getLanguageCode (int position ) {
146
+ String getLanguageCode (int position ) {
150
147
return languageCodesList .get (position );
151
148
}
152
149
153
- public int getIndexOfUserDefaultLocale (Context context ) {
150
+ int getIndexOfUserDefaultLocale (Context context ) {
154
151
return languageCodesList .indexOf (context .getResources ().getConfiguration ().locale .getLanguage ());
155
152
}
156
153
0 commit comments