Альтернатива String.join в Android?


82

Я хочу об'єднати ArrayList із комами як роздільники. Я знайшов цю відповідь , заявивши, що це можна використовуватиString.join на Java.

Однак, коли я намагаюся використовувати це, Android Studio видає таку помилку:

Не вдається вирішити метод 'join (java.lang.String, java.lang.String, java.lang.String, java.lang.String)'

Чи є хороша, стисла альтернатива для Android Studio (замість використання циклу for)?


TextUtils.join (), можливо?
mjp66

спробуйте StringUtils.join
Бхаргав Танкі

Відповіді:


186

Ви можете використовувати TextUtils.joinзамість цього:

String result = TextUtils.join(", ", list);

( String.joinбуло додано в Java 8, саме тому ви не можете використовувати його в Android.)


3
Щоб заощадити кілька кліків для користувачів, що не користуються Android Studio:import android.text.TextUtils
Пітер Янкуляк,

Використання TextUtils може спричинити проблеми з модульним тестом. В цьому випадку потрібно скористатися функцією тут: android.googlesource.com/platform/frameworks/base / + / refs / heads / ...
Шубін

1
@Subin: Що це за проблема? І чому посилання на TextUtils як альтернативу TextUtils? Боюсь, ваш коментар насправді не зрозумілий.
Джон Скіт,

@JonSkeet Причина цієї проблеми: stackoverflow.com/q/35763289/1372424 Рішення тут: medium.com/@okmanideep / ...
Шубін

2
@Subin: Так, так конкретно, якщо ви використовуєте Mockito. І зауважте, що рішення полягає у копіюванні джерела TextUtils у ваш тестовий проект.
Джон Скіт,

7
String[] List ={"<html>","<body>","<title>"};
String abc;       
abc =TextUtils.join("\n", List);
textmsg.getText().insert(textmsg.getSelectionStart(), abc);

результат:

<html>
<body>
<title>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.