Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组返回每行上的每一项,而不是每行返回一项_Java_Android_Arrays_Android Recyclerview - Fatal编程技术网

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());