当匹配字符串中的任何位置时,如何列出所有名称?

时间:2012-03-21 06:40:25

标签: android xml

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)。但上面的代码显示所有名称。 抱歉我的英语不好。

1 个答案:

答案 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);
    }
}