Я попробовал, сам ... Нашел, что это не сработало. Поэтому я проверяю исходный код ArrayAdapter и выяснил проблему. ArrayAdapter, будучи инициализированным массивом, преобразует массив в AbstractList (List), который не может быть изменен.
Решение Используйте вместо ArrayList
массив при инициализации ArrayAdapter.
String[] array = {"a","b","c","d","e","f","g"};
ArrayList lst = new ArrayList(Arrays.asList(array));
final ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1, lst);
Приветствия!
Вы говорите, что вам нужно решение LINQ ... это просто:
var replacedNames = names.Select(x => x.Replace("pdf", "txt"));
Мы не знаем тип имен
, но если вы хотите назначить его обратно, вы потенциально можете использовать ToArray
или ToList
:
// If names is a List<T>
names = names.Select(x => x.Replace("pdf", "txt")).ToList();
// If names is an array
names = names.Select(x => x.Replace("pdf", "txt")).ToArray();
Вы должны знать, что опубликованный вами код не использует LINQ на данный момент вообще есть ...
Строки в C # неизменяемы (не изменяются), поэтому s.Replace
вернет новую строку . К сожалению, это означает, что вы не можете использовать foreach
для обновления. Если имена являются массивом, это должно работать:
for(int i = 0; i < names.Length; i++)
{
names[i] = names[i].Replace("pdf", "txt");
}
s.Replace - это функция, поэтому вам нужно s = s.Replace () .. хотя лучше использовать StringBuilder. (см. ответ вверху)
Как уже упоминалось, вам нужно будет использовать цикл for
, чтобы сделать это на месте. Однако, если вам не нужно, чтобы операция выполнялась на месте (т.е. результаты могут быть другой коллекцией), вы также можете сделать это как запрос linq, например
var results = from name in names select name.Replace("pdf", "txt");
Одно но: похоже, вы пытаетесь изменить расширение некоторых имен файлов. Если это то, что вы пытаетесь сделать, я бы порекомендовал Path.ChangeExtension
, который специально разработан для этой цели.
var results = from name in names select Path.ChangeExtension(name, "txt");
Зачем использовать замену, это замедлит работу приложения. Используйте регулярное выражение:
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.replace.aspx