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

Adi*_*ilp 1 string android arraylist

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

但是当我使用的时候

String joined = TextUtils.join(", ", participants);
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

private ArrayList<String> participants;
Run Code Online (Sandbox Code Playgroud)

不确定出了什么问题?

在此输入图像描述

更新:

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

String s = TextUtils.join(", ", list);
Run Code Online (Sandbox Code Playgroud)

这有效,当我有一个我手动填充的列表,但下面是代码现在如何工作.

在onCreate()

callApi(type);
String s = TextUtils.join(", ", participants);
getSupportActionBar().setTitle(s);
Run Code Online (Sandbox Code Playgroud)

在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));
}
Run Code Online (Sandbox Code Playgroud)

MrM*_*ood 10

我正在尝试重现您的错误而无法做到.这是我的代码:

@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);
}
Run Code Online (Sandbox Code Playgroud)

我的输出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));
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我不知道您正在使用什么网络库,但您可能必须将OnResponseListener定义为接口.这很容易:

public interface OnResponseListener<T> {
    public void onResponse(T response);
}
Run Code Online (Sandbox Code Playgroud)

然后,您需要修改callApi函数以获取OnResponseListener>的实例,并在完成调用后调用它的onResponse方法.

我建议您查看Volley库,并阅读有关简单网络调用的Android文档.