字符串的Arraylist成一个逗号分隔的字符串

时间:2016-11-26 19:32:28

标签: android string arraylist

尝试将字符串的Arraylist转换为一个逗号分隔的大字符串。

但是当我使用

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

调试器显示参与者的大小为4,但是连接的值为“”因此为空

enter image description here

private ArrayList<String> participants;

不确定出了什么问题?

enter image description here

更新:

List<String> list = new ArrayList<>();
list.add("Philip");
list.add("Paul Smith");
list.add("Raja");
list.add("Ez");

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

4 个答案:

答案 0 :(得分:9)

我试图重现您的错误但无法做到。这是我的代码:

@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&gt;的实例。完成通话后调用它的onResponse方法。

我建议您查看Volley library,并阅读有关简单网络电话的Android documentation

答案 1 :(得分:0)

我不知道TextUtils的作用。这样做。

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

很简单,只需使用它。

答案 2 :(得分:0)

我使用Apache Common Utilities中的StringUtils.join

代码非常简单,就像你想要的那样,

StringUtils.join(participants,", ");

对我来说完美无瑕。

修改

根据要求,这里是StringUtils.java文件,适用于那些只想使用这个实用程序类而不是整个库的人。

答案 3 :(得分:0)

尝试Kotlin

val commaSeperatedString = listOfStringColumn.joinToString { it -> 
 "\'${it.nameOfStringVariable}\'" }

//输出:“一个”,“两个”,“三个”,“四个”,“五个”