嗨,我已经在Android中开发了公交预订应用程序。这里有一个称为总线过滤的功能。我们可以根据用户的选择来过滤总线。因此,在总线列表中,它包含交流和非交流。如何根据AC/非AC进行过滤。
for (int j = 0; j < busListResponses.size(); j++)
{
if (busListResponses.get(j).getCOACHDESC().toLowerCase().contains((strvalue.toString().toLowerCase()))) {
{
filterResponse.add(busListResponses.get(j));
}
}
}因此,如果我选择非AC,它将检索正确的结果。但是,如果我选择交流,它返回所有总线包含交流和非交流
发布于 2019-08-13 14:36:36
for (int j = 0; j < busListResponses.size(); j++)
{
if (busListResponses.get(j).getCOACHDESC().toLowerCase().equals((strvalue.toString().toLowerCase()))) {
{
filterResponse.add(busListResponses.get(j));
}
}
}或不转换为小写
for (int j = 0; j < busListResponses.size(); j++)
{
if (busListResponses.get(j).getCOACHDESC().equalsIgnoreCase((strvalue.toString()))) {
{
filterResponse.add(busListResponses.get(j));
}
}
}发布于 2019-08-13 14:49:13
在总线模型类中添加一个布尔方法isAirConditioned(),因此当您循环遍历列表时,只需像这样做:
public class Bus{
...
public boolean isAirConditioned(){
String coachDesc = getCoachDesc();
if(coachDesc.contains("NON AC")
return false;
return true;
}
}并将for循环修改为
for (int j = 0; j < busListResponses.size(); j++) {
if (busListResponses.get(j).isAirConditioned()) {
filterResponse.add(busListResponses.get(j));
}
}编辑:在for循环之前添加此条件
String strvalue;
if((!strvalue.contains("AC") || strvalue.contains("NON AC"))|| (strvalue.contains("AC") && !strvalue.contains("NON AC" )))
for (int j = 0; j < busListResponses.size(); j++) {
if (busListResponses.get(j).getCOACHDESC().contains(strvalue) {
filterResponse.add(busListResponses.get(j));
}
}如果你在卧铺和半卧铺上遇到同样的问题,请使用类似的逻辑。
Edit2:这应该是for循环之前的条件语句,以包含所有参数
if(((strvalue.contains("Semi Sleeper") || strvalue.contains("NON AC")||
strvalue.contains("Seater")) || (strvalue.contains("AC") &&
!strvalue.contains("NON AC" )) || (strvalue.contains("Sleeper") &&
!strvalue.contains("Semi Sleeper")))https://stackoverflow.com/questions/57472185
复制相似问题