尝试将字符串的Arraylist转换为一个逗号分隔的大字符串。
但是当我使用
时String joined = TextUtils.join(", ", participants);
调试器显示参与者的大小为4,但是连接的值为“”因此为空
private ArrayList<String> participants;
不确定出了什么问题?
更新:
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));
}
答案 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}\'" }
//输出:“一个”,“两个”,“三个”,“四个”,“五个”