2016-11-26 254 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

相关问题