for (int i = 0; i < nodes.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nodes.item(i);
String nameMapString = XMLfunctions.getValue(e, "name");
if(nameMapString.matches(".*+searchTextString1+.*")){
map.put("id", XMLfunctions.getValue(e, "id"));
map.put("name", "Name:" + XMLfunctions.getValue(e, "name"));
map.put("Score", "Score: " + XMLfunctions.getValue(e, "score"));
mylist.add(map);
}
}
我正在写一个android程序。 searchTextString是EditText中用户提供的值。 nameMapString保存xml文件中name标记的值。 假设它可能包含Mark,Marry,Jack,JackMar等。 当我只搜索Ma时,我想显示包含Ma的所有内容(在本例中为Mark,Marry,JackMar)。但上面的代码显示所有名称。 抱歉我的英语不好。
答案 0 :(得分:1)
您可以尝试使用indexOf(String str)
方法,请参阅下面的更新代码,
for (int i = 0; i < nodes.getLength(); i++)
{
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nodes.item(i);
String nameMapString = XMLfunctions.getValue(e, "name");
if ( nameMapString.toLowerCase().indexOf(searchTextString1.toLowerCase()) != -1 ) // != -1 means string is present in the search string
{
map.put("id", XMLfunctions.getValue(e, "id"));
map.put("name", "Name:" + XMLfunctions.getValue(e, "name"));
map.put("Score", "Score: " + XMLfunctions.getValue(e, "score"));
mylist.add(map);
}
}