2017-03-20 18 views
2

我有一個字符串數組emails和一個字符串變量Category_name。要獲取和設置Category_name結果我用這個:如何在一行代碼中獲取並設置字符串數組?

holder.category_name.setText(mcategoryset.get(position).getCategory_name()); 

emails這是一個字符串數組,我這樣做:

holder.category_emails.setText(mcategoryset.get(position).getEmails().get(0)); 

的唯一位置0即我收到值。我怎樣才能以編程方式獲得所有的值,而不是隻獲取單個值?

+0

對於android開發,您可以使用TextUtils庫作爲'holder.category_emails.setText(TextUtils.join(「,」,mcategoryset.get(position).getEmails()));' –

回答

1

試試這個:

final StringBuilder stringBuilder = new StringBuilder(); 

for (String email : categorySet.get(position).getEmails()) { 
    if (!stringBuilder.toString().isEmpty()) { 
     stringBuilder.append("\n"); 
    } 
    stringBuilder.append(email); 
} 

holder.category_emails.setText(stringBuilder.toString()); 
+0

先生,在價值結束之後,我越來越'''了。我能做些什麼來最終刪除逗號? –

+0

請檢查編輯 –

0

在你的POJO類,電子郵件吸氣添加另一次吸氣,這樣的事情,

public String getFullEmails(){ 
    StringBuilder emailString = new StringBuilder(); 
    int length = emails.length(); 
    for(for int=0; i<length; i++){ 
     emailString.append(emails[i]); 
     if(i != length-1){ 
      emailString.append(",\n"); 
     } 
    } 
    return emailString.toString(); 
} 

寫在POJO類比適配器寫它的其他邏輯的這種方法將直接爲您提供更清晰的代碼並且您可以在適配器上使用實際適配器邏輯,而不是一次又一次寫入相同的電子郵件代碼。

+0

改爲使用StringBuilder。請記住,字符串在Java中是不可變的。你正在創建新的每個+ – Edd

+0

@Edd,StringBuilder和字符串連接在執行小字符串連接時對性能的影響可以忽略不計。當然,StringBuilders對於繁重的任務來說更好,但爲了獲得1到20封電子郵件,字符串連接更具可讀性並易於管理。 –

+0

我沒有對它進行基準測試,但可以肯定的是,對於像這樣的小任務,它不會像你說的那樣產生巨大的差異。不過,讓讀者意識到StringBuilder會很好。我認爲你的回答對於一般讀者來說會更有利。 – Edd

0

您可以使用java.util.Arrays嘗試使用java.util.Arrays,它是由java提供的實用程序類方法來緩解這些操作。試着做這樣的事情: -

holder.category_emails.setText(Arrays.toString(mcategoryset.get(position).getEmails())); 

其他選項是: -

commons-lang也有 - ArrayUtils.toString(array)(但更喜歡JDK之一)

公共琅允許自定義分隔符 - StringUtils的。加入(數組, '')

Guava還允許分離器,並具有要跳過空值的選項:Joiner.on(',').skipNulls().join(array)

2

使用下面的代碼

String emails = ""; 

for(int i = 0; i<mcategoryset.get(position).getEmails().size();i++){ 
emails = emails+mcategoryset.get(position).getEmails().get(i)+","; 
} 

holder.category_emails.setText(emails); 
0

我想你應該重載你的函數,像category_emails.setText(String[])或使用for-each要經過價值。

相關問題