Android 将字符串的Arraylist转换为一个逗号分隔的字符串

Android 将字符串的Arraylist转换为一个逗号分隔的字符串,android,string,arraylist,Android,String,Arraylist,正在尝试将字符串的Arraylist转换为一个逗号分隔的大字符串 但是当我使用 String joined = TextUtils.join(", ", participants); 调试器显示参与者的大小为4,但联接的值为“”,因此为空 在callAPI()中: JSONArray participantsR=sub.getJSONArray(“referralParticipants”); Log.e(“参与者长度”,String.valueOf(participantsR.length

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

但是当我使用

String joined = TextUtils.join(", ", participants);
调试器显示参与者的大小为4,但联接的值为“”,因此为空

在callAPI()中:

JSONArray participantsR=sub.getJSONArray(“referralParticipants”);
Log.e(“参与者长度”,String.valueOf(participantsR.length());
对于(int i=0;i
我不知道TextUtils做什么。这就行了

StringBuffer sb = new StringBuffer();
for (String x : participants) {
    sb.append(x);
    sb.append(", ");
}
return sb.toString();
很简单,只需使用它。

我使用Apache公共实用程序

代码非常简单,正是您想要的方式

StringUtils.join(participants,", ");
对我来说完美无瑕

编辑


根据要求,这是为那些只想使用这一个实用程序类而不是整个库的人准备的文件。

我正试图重现您的错误,但无法。这是我的密码:

@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);
}
我不知道您使用的是什么网络库,但您可能必须将OnResponseListener定义为一个接口。这很简单:

public interface OnResponseListener<T> {
    public void onResponse(T response);
}
响应侦听器上的公共接口{ 公共响应(T响应); } 然后,您需要修改callApi函数以获取OnResponseListener>的实例,并在完成调用后调用其onResponse方法

我建议您查看,并阅读有关简单网络呼叫的信息。

请尝试使用kotlin

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

//输出:“一”、“二”、“三”、“四”、“五”

我支持这个答案,但Android有一个索引限制,Apache Commons是一个庞大的库。只需使用单个StringUtils类即可。您不需要包含整个库。就我个人而言,我不知道如何从库中只导入单个类。你介意举一个例子来说明如何做到这一点吗?我只用一个类文件更新了这个问题。只要把这个类复制粘贴到你的项目中,你就可以开始了。如果有帮助的话,请不要投赞成票。参与者仍然有4个字符串类型的对象。我刚刚复制了它,它按照你的方式工作。但是,我是通过API调用添加数组的。当我返回到使用从API更新的列表替换列表时,它会返回到不显示join对象中的任何内容。即使列表有4个字符串元素。我已经更新了我的问题,添加了更多关于列表填充方式的代码。您应该发布网络呼叫代码。我假设发生的情况是,在进行加入之前,您没有等待呼叫完成,因此加入的列表是空的。调试时不会出现这种情况,因为网络线程将继续,并在您打开调试工具时填充列表。谢谢,我忘记了这一点,我有一个处理程序,我将代码放在那里,现在一切都正常了!
StringUtils.join(participants,", ");
@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);
}
@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));
        }
    });
}
public interface OnResponseListener<T> {
    public void onResponse(T response);
}
val commaSeperatedString = listOfStringColumn.joinToString { it -> 
 "\'${it.nameOfStringVariable}\'" }