所以我这样做:
int len = lv.getCount();
List<String> Cool = null;
SparseBooleanArray checked = lv.getCheckedItemPositions();
for (int i = 0; i < len; i++)
if (checked.get(i)) {
String item = String.valueOf(names.get(i));
int start = item.lastIndexOf('=') + 1;
int end = item.lastIndexOf('}');
String TEST = item.substring(start, end);
Log.d("Log", TEST);
Cool = new ArrayList<String>();
Cool.add(TEST);
}
String NEW = StringUtils.join(Cool, ',');
Log.d("Log", NEW);
每次用下一个项目替换列表中的东西。我如何让它把弦放在彼此之后。
感谢您的帮助。
答案 0 :(得分:2)
List<String> Cool = new ArrayList<String>();
在顶部创建列表
Cool = new ArrayList<String>();
并删除此行,因为它将始终创建您不想要的新列表
答案 1 :(得分:1)
您在for循环的每次迭代中构建new ArrayList
Log.d("Log", TEST);
Cool = new ArrayList<String>(); // NOT HERE!!!!
Cool.add(TEST);
在循环之外构造它一次
List<String> Cool = new ArrayList<String>(); // also Cool should be cool.
答案 2 :(得分:0)
它继续重置列表的原因是因为你在循环中初始化了List。 在循环外初始化它,算法将起作用。
初始化:
Cool = new ArrayList();
更正后的代码:
int len = lv.getCount();
List<String> Cool = new ArrayList<String>();
SparseBooleanArray checked = lv.getCheckedItemPositions();
for (int i = 0; i < len; i++)
if (checked.get(i)) {
String item = String.valueOf(names.get(i));
int start = item.lastIndexOf('=') + 1;
int end = item.lastIndexOf('}');
String TEST = item.substring(start, end);
Log.d("Log", TEST);
Cool.add(TEST);
}
String NEW = StringUtils.join(Cool, ',');
Log.d("Log", NEW);