Java 数组返回每行上的每一项,而不是每行返回一项
我正在尝试使用我转换为数组的集合在回收器视图中设置许多语言。我真的不明白为什么这会导致每一行都显示每种语言。任何指点都将受到感激。这是我的密码:Java 数组返回每行上的每一项,而不是每行返回一项,java,android,arrays,android-recyclerview,Java,Android,Arrays,Android Recyclerview,我正在尝试使用我转换为数组的集合在回收器视图中设置许多语言。我真的不明白为什么这会导致每一行都显示每种语言。任何指点都将受到感激。这是我的密码: public void onInit(int initStatus) { if (initStatus == TextToSpeech.SUCCESS) { availableLanguages = myTTS.getAvailableLanguages(); Locale[] arrayLocale =
public void onInit(int initStatus) {
if (initStatus == TextToSpeech.SUCCESS) {
availableLanguages = myTTS.getAvailableLanguages();
Locale[] arrayLocale = availableLanguages.toArray(new Locale[availableLanguages.size()]);
String locDisplayResults = Arrays.toString(arrayLocale);
for (int i = 1; i < arrayLocale.length; i++) {
languagesList.add(new Language(arrayLocale[i], locDisplayResults));
Collections.sort(languagesList, new Comparator<Language>() {
@Override
public int compare(Language languages1, Language languages2) {
return languages1.getLocaleDisplay().compareTo(languages2.getLocaleDisplay());
}
});
recyclerAdapter.notifyDataSetChanged();
}
}
}
public void onInit(int initStatus){
if(initStatus==TextToSpeech.SUCCESS){
availableLanguages=myTTS.getAvailableLanguages();
区域设置[]arrayLocale=availableLanguages.toArray(新区域设置[availableLanguages.size()]);
字符串locDisplayResults=Arrays.toString(ArrayScale);
for(int i=1;i
谢谢 此代码“Arrays.toString(arrayLocale);”将为您提供一个包含所有元素的字符串。您正在将其分配给变量“locDisplayResults”,并在languagesList中的所有行上设置它。我认为这就是问题所在。这段代码“Arrays.toString(arrayLocale);”将为您提供一个包含所有元素的字符串。您正在将其分配给变量“locDisplayResults”,并在languagesList中的所有行上设置它。我认为这就是问题所在。假设languagesList是一个映射,我不知道如果给定字符串locDisplayResults=Arrays.toString(ArrayScale);和languagesList.add(新语言(arrayLocale[i],locDisplayResults));问题是,我试图删除“arrayLocale[I]”,但同样的情况也发生了。你知道Arrays.toString()的功能吗?你最终拉整个阵列。如果languagesList是一个映射,我不知道如果给定字符串locDisplayResults=Arrays.toString(ArrayScale),您会认为它的行为会有什么不同;和languagesList.add(新语言(arrayLocale[i],locDisplayResults));问题是,我试图删除“arrayLocale[I]”,但同样的情况也发生了。你知道Arrays.toString()的功能吗?你最终拉整个阵列。您最好只提取您想要的元素。谢谢,我理解,但如果我不这样做,我在每一行上都会得到:Ljava.util.Locale@2884e86。使用字符串locDisplayResults=Arrays.toString(arrayLocale)可以获得实际的语言,或者至少是语言环境。我得弄清楚如何在之后获得显示名称。你试过这个吗
languagesList.add(新语言(arrayLocale[i],arrayLocale[i].toString());
谢谢,我理解,但如果我不这样做,我在每一行上得到的就是:Ljava.util.Locale;@2884e86.Using String locDisplayResults=Arrays.toString(arrayLocale)允许我获取实际的语言,或者至少是区域设置。我必须弄清楚如何在之后获取显示名称。您尝试过这个吗?languagesList.add(新语言(arrayLocale[I],arrayLocale[I].toString());