Используйте StringBuilder
:
// ...
final String SEPARATOR = ", ";
StringBuilder builder = new StringBuilder();
String prefix = "";
while(cursor.moveToNext()) {
builder.append(prefix);
prefix = SEPARATOR;
builder.append(cursor.getString(cursor.getColumnIndex(Tags.COLUMN_TNAME)));
}
String output = builder.toString()
// ...
StringBuilder
позволяет сцепить String
s быстрее, что нормальный outputString += inputString
будет делать. Это связано с тем, что объекты String
неизменяемы, а StringBuilder
- нет. Если вы хотите узнать больше об этом, посмотрите, например. на this article.
Edit: Чтобы вернуть созданную строку в вызывающем методе, ваш метод fetchTags()
должен быть определен следующим образом:
public String fetchTags() {
// your code
return output;
}
Вы определили его с возвращаемым типом void
: public void fetchTags() { ... }
. Это не позволит вам вернуть какие-либо значения.
Полный метод fetchTags()
должен выглядеть следующим образом:
public String fetchTags() {
ContentResolver contentResolver = this.getContentResolver();
Cursor cursor = contentResolver.query(TagsContentProvider.CONTENT_URI,
new String[] {
Tags.COLUMN_TNAME
}, null, null, null);
cursor.getCount();
final String SEPARATOR = ", ";
StringBuilder builder = new StringBuilder();
String prefix = "";
while (cursor.moveToNext()) {
builder.append(prefix);
prefix = SEPARATOR;
builder.append(cursor.getString(cursor.getColumnIndex(Tags.COLUMN_TNAME)));
}
String output = builder.toString()
cursor.close();
return output;
}
Спасибо :) Значит, вывод я получаю из него не считается строкой? Но я также хочу использовать его как одну строку в другом классе, возможно ли это? –
Да, конечно. 'String output = builder.toString()' будет записывать содержимое как обычный 'String' в' output'. Вы можете использовать это как любой другой 'String'. – Timo
Но вне этого метода в другом, он не признает «строителя» правильно? Как и у меня есть строка «mSearchTerm», в другом методе я хотел, чтобы выход fetchTags() был этой строкой, как мне следует называть fetchTags()? –