Ala*_*ifa 0 java string android
我有一系列对象,比如说汽车。对象中有一个名为“selected”的属性,带有 setter 和 getter。
用户可以从回收视图中选择/取消选择汽车,并且我使用适配器正确更新数据。现在,当用户单击按钮时,我想提取所有选定汽车的 ID 字符串。
所以我就这么做了。
String cars_ids = "";
StringBuilder car_builder = new StringBuilder();
for (Car car: carList) {
// I added this log to make sure that there are in fact selected cars. and there are!
Log.e("==>> cicarty ", car.isSelected() +"");
if (car.isSelected()) {
car_builder.append(car.getID()).append(",");
}
}
if (!cars_ids.isEmpty()){
cars_ids = car_builder.toString().substring(0, car_builder.toString().length() - 1).trim();
}
// cars_ids is always empty...!!
Log.e("=>> ", " cars_ids : " + cars_ids );
Run Code Online (Sandbox Code Playgroud)
我也尝试过串联,但也不起作用
String cars_ids = "";
for (Car car: carList) {
Log.e("==>> cicarty ", car.isSelected() +"");
if (car.isSelected()) {
cars_ids.concat(car.getID() + ",");
}
}
if (!cars_ids.isEmpty()){
cars_ids = cars_ids.substring(0, cars_ids.length() - 1).trim();
}
// cars_ids is always empty again...!!
Log.e("=>> ", " cars_ids : " + cars_ids );
Run Code Online (Sandbox Code Playgroud)
if (!cars_ids.isEmpty()){
Run Code Online (Sandbox Code Playgroud)
始终为 false,StringBuilder因为它始终为空:您要附加到StringBuilder,然后检查String。
使用:
if (car_builder.length() > 0){
Run Code Online (Sandbox Code Playgroud)
反而。进而
// cars_ids is always empty...!!
Log.e("=>> ", " cars_ids : " + cars_ids );
Run Code Online (Sandbox Code Playgroud)
是的,总是空的,因为你没有改变它。先分配car_ids = car_builder.toString()。
cars_ids.concat(car.getID() + ",");
Run Code Online (Sandbox Code Playgroud)
不会做任何有用的事情,因为您忽略了返回值。反而:
car_ids = cars_ids.concat(car.getID() + ",");
Run Code Online (Sandbox Code Playgroud)
或者,更惯用的说法是:
car_ids += car.getID() + ",";
Run Code Online (Sandbox Code Playgroud)
值得一提的是,在 Java 8+ 中,您可以更轻松地使用 aStringJoiner来实现相同的目的。