2014-08-29 25 views
0

我將ArrayList傳遞給另一個方法,我只想讀出列表中的特定字符串。無法讀出Android中的ArrayList

public void pruefeWerHat(ArrayList<Teilnehmer> test){ 

     System.out.println(test); 

我得到這個logcat的

「1彼得潘0 0,2漢斯0 0」

現在我只是想用這個名字,但如果我說(後sysout)

String name = test.get(1);

他說的問題是,他不能從Teilnehmer轉換爲String。我也測試了Teilnehmer.get(1),但它也不工作。

+0

你嘗試字符串名稱= test.get(1).toString();? – Jamil 2014-08-29 17:04:54

回答

0

當你

領域

System.out.println(test);

自動使用toString()方法。這個方法在Object類中,所以java中的所有對象都可以調用這個方法。

當你做

String name = test.get(1);

toString()方法不是自己調用的,你必須自己調用它。要做到這一點,只需使用

String name = test.get(1).toString();另外,如果要更改打印內容,可以覆蓋類中的toString()方法。

@Overwrite 
public String toString() { 
    String stringToPrint = "This string will be printed"; 
    return stringToPrint; 
} 

現在,當你做

的System.out.println(測試);

而不是看到「1彼得潘0 0,2漢斯0 0」,你會看到「此字符串將打印」(或任何你選擇在你的toString加()實現。

0

當你打印測試的toString函數被調用所以用這個在你的代碼

String name = test.get(1).toString(); 
0

get(int index)方法可供ArrayList返回類型爲E。在這種情況下,它返回類型Teilnehmer,這顯然不是字符串。您可以嘗試將Teilnehmer(雖然可能不是所希望的)轉換爲字符串,或者只是簡單地調用從Object類型繼承的.toString()方法(例如test.get(1).toString())。或者,如果需要,調用返回String的方法。 test.get(1).getNameAsString();

你被允許調用類型的System.out.println(Teilnehmer)的原因是,使的println到對象的字符串表示的電話:

public void println(Object x) { 
     String s = String.valueOf(x); 
      synchronized (this) { 
       print(s); 
       newLine(); 
      } 
    } 
0

什麼Teilnehmer的成員?

你需要使用像

字符串名稱=(Teilnehmer)測試[1],請將.Name

其中Name是您要提取