通过附加到它的String获取listview的集合(android)

时间:2015-09-30 13:01:59

标签: android android-listview

我有listview元素,我正在尝试从列表视图实现基本搜索。

此函数创建它的元素:

    listDataHeader = new ArrayList<String>();
    listDataChild = new HashMap<String, List<String>>();
    int counter = 0;
    for (int i = 0; i<namesmails.size();i = i+2) {
        //namesmails[0] == name && namesmails[1] == phone && namesmails[2] == email
        String name = namesmails.get(i);
        String mail = namesmails.get(i + 1);
        String phone = returnNumber(namesphones,name);
        listDataHeader.add(name);
        List<String> currentName = new ArrayList<String>();
        currentName.add(phone);
        currentName.add(mail);
        listDataChild.put(listDataHeader.get(counter), currentName);
        counter += 1;
    }

现在搜索我有查询+我知道输入成功(名称存在于列表中,但我不知道如何访问它。)

if (namesmails.contains(query)){
    //I want to get the position of queryed name to expand-it. Currently
    //i've set static number (20) to expand and select.
    expListView.expandGroup(20)
    expListView.setSelection(20);
}

如何通过添加名称访问Expandable ListView,以便我可以展开它并将其设置为选中状态?

1 个答案:

答案 0 :(得分:0)

我得到了一位显然不是该网站用户的朋友的帮助,但如果将来有人需要帮助,这是可能的解决方案之一。这可能不是那里唯一的解决方案(因为这可能是一种直接用名字访问孩子的方法),但我提出了一种解决方法。

我在课程开头创建了一个名为onlynames的额外ArrayList,将其设置为全局变量。

在方法中:

listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<String>>();
int counter = 0;
for (int i = 0; i<namesmails.size();i = i+2) {
    //namesmails[0] == name && namesmails[1] == phone && namesmails[2] == email
    String name = namesmails.get(i);
    String mail = namesmails.get(i + 1);
    String phone = returnNumber(namesphones,name);
    namesonly.add(name);
    listDataHeader.add(name);
    List<String> currentName = new ArrayList<String>();
    currentName.add(phone);
    currentName.add(mail);
    listDataChild.put(listDataHeader.get(counter), currentName);
    counter += 1;
}

我添加了namesonly.add(name):现在,nameonly在名称上与listDataHeader具有相同的位置,所以我可以调用它:

if (namesmails.contains(query)){
    int el = namesonly.indexOf(query);
    expListView.expandGroup(el)
    expListView.setSelection(el);
}

这有效:)。