2016-11-29 83 views
0

我试图在使用一个转换为数组的集合的回收站视图中设置多种语言。我不明白为什么这会导致每行显示的每种语言。任何指针都会被感激地收到。这里是我的代码:Array返回每行中的每个项目而不是每行一个项目

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

谢谢!

+0

假设语言列表是一个地图,我不知道你会怎么会认为它会有任何不同的行为给予字符串locDisplayResults = Arrays.toString(arrayLocale);和languagesList.add(新语言(arrayLocale [i],locDisplayResults)); – DejaVuSansMono

+0

的事情是,我试图消除“arrayLocale [I]”,同样的事情发生了。 –

+1

你知道Arrays.toString()是做什么的吗? https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#toString(INT [])你最终拉动整个阵列。你最好只拉你想要的元素。 – DejaVuSansMono

回答

2

此代码“Arrays.toString(arrayLocale);”会给你一个包含所有元素的字符串。你将这个分配给变量“locDisplayResults”,并在languagesList中的所有行上设置它。我认为这是问题。

+0

谢谢,我明白,但如果我不这样做,这是我在每行上得到的:Ljava.util.Locale; @ 2884e86。使用字符串locDisplayResults = Arrays.toString(arrayLocale)可以让我获得实际的语言,或者至少是语言环境。我必须弄清楚如何获得显示名称。 –

+1

你有试过吗? 'languagesList.add(new Language(arrayLocale [i],arrayLocale [i] .toString());' – Einar

+0

你是一个明星,非常感谢你的作品! –