2016-11-26 680 views
-2

試圖將字符串的Arraylist轉換爲一個大的逗號分隔的字符串。將字符串的Arraylist轉換爲一個逗號分隔的字符串

然而,當我使用

String joined = TextUtils.join(", ", participants); 

調試器顯示我要參加的4大小然而到底是怎麼回事的業增加值爲「」因此空

enter image description here

private ArrayList<String> participants; 

不知道錯誤?

enter image description here

UPDATE:

 List<String> list = new ArrayList<>(); 
    list.add("Philip Johnson"); 
    list.add("Paul Smith"); 
    list.add("Raja P"); 
    list.add("Ezhu Malai"); 

    String s = TextUtils.join(", ", list); 

這工作時,我有我手動填寫下面卻是代碼是如何工作的,現在的列表。

在OnCreate()

callApi(type); 
String s = TextUtils.join(", ", participants); 
getSupportActionBar().setTitle(s); 

在callAPI():

    JSONArray participantsR = sub.getJSONArray("referralParticipants"); 

       Log.e("Participants length ", String.valueOf(participantsR.length())); 

       for (int i = 0; i < participantsR.length(); i++) { 

        JSONObject object = participantsR.getJSONObject(i); 

        String firstname = (String) object.get("fullName"); 

        participants.add(firstname); 

        Log.e("Times", String.valueOf(i)); 

       } 

回答

1

我試圖重現你的錯誤,我無法。這裏是我的代碼:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_temp); 

    List<String> list = new ArrayList<>(); 
    list.add("Philip Johnson"); 
    list.add("Paul Smith"); 
    list.add("Raja P"); 
    list.add("Ezhu Malai"); 

    String s = TextUtils.join(", ", list); 

    Log.d(LOGTAG, s); 
} 

我的輸出是Philip Johnson, Paul Smith, Raja P, Ezhu Malai如預期。

您是否正在導入正確的TextUtils類?

android.text.TextUtils;

鑑於新的信息,這裏是我的方法:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_temp); 

    callApi(type, new OnResponseListener<List<String>>() { 
     @Override public void onResponse(List<String> list) { 
      getSupportActionBar().setTitle(TextUtils.join(", ", list)); 
     } 
    }); 
} 

我不知道網絡你使用的庫,但你可能需要定義OnResponseListener作爲接口。這很容易:

public interface OnResponseListener<T> { 
    public void onResponse(T response); 
} 

然後,您將需要修改callApi功能採取OnResponseListener的實例>,並調用它完成呼叫後onResponse方法。

我建議您查看Volley library,並閱讀關於簡單網絡調用的Android documentation

+0

我剛剛複製它,它的工作方式。不過,我正在從API調用中添加數組。當我恢復到使用從API更新的列表替換列表時,它返回到不顯示連接對象中的任何內容。即使列表有4個字符串元素。 – Adilp

+0

我已更新我的問題,更多關於我的列表如何填充的代碼 – Adilp

+1

您應該發佈您的網絡調用代碼。我假設發生的事情是,在進行加入之前,您並未等待通話完成,因此加入了一個空白列表。調試時看起來並不像這樣,因爲網絡線程將會繼續,並會在您打開調試工具時填充列表。 – MrMannWood

0

我不知道文本實用程序做什麼。這將做到這一點。

StringBuffer sb = new StringBuffer(); 
for (String x : participants) { 
    sb.append(x); 
    sb.append(", "); 
} 
return sb.toString(); 

夠簡單,就用那個吧。

+0

它給某人「」。參與者仍然有4個字符串類型的對象。 – Adilp

0

我使用Apache Common Utilities的StringUtils.join

的代碼是超級簡單的只是你想要的方式,

StringUtils.join(participants,", "); 

完美對我的作品。

編輯

按照要求,這裏是StringUtils.java文件對於那些誰只是想用這種單一的實用工具類,而不是整個庫。

+0

我會第二個答案,但Android有Dex限制,Apache Commons是一個龐大的圖書館。 – MrMannWood

+0

只需使用單個StringUtils類。您不需要包含整個庫。 –

+0

爲了我自己的利益,我不知道如何從庫中只導入一個類。你能介紹一下它如何完成的例子嗎? – MrMannWood

相關問題