【发布时间】:2015-04-22 21:02:17
【问题描述】:
大家好,这就是我向可扩展列表添加内容的方式..
listDataHeader = new ArrayList(Arrays.asList("Afghanistan",
"Albania",
"Algeria",
"Andorra",
"Angola",
"Anguilla",
"Antigua and Barbuda",
"Argentina",
"Armenia",
"Aruba",`........`
listDataChild = new HashMap>();
// Adding child data
List<String> Afghanistan = new ArrayList<String>();
Afghanistan.add("Dari");
Afghanistan.add("Pashto");
List<String> Albania = new ArrayList<String>();
Albania.add("Albanian");
Albania.add("Greek");
List<String> Algeria = new ArrayList<String>();
Algeria.add("Arabic");
Algeria.add("French");
Algeria.add("Berber Dialects");
过滤后
private class ItemFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
String filterString = constraint.toString().toLowerCase();
FilterResults results = new FilterResults();
final List<String> list = originalData;
final HashMap<String, List<String>> childList = originalDatachild;
int count = list.size();
final ArrayList<String> nlist = new ArrayList<String>(count);
final HashMap<String, List<String>> nlistChild= new HashMap<String, List<String>>();
int counterFilter=0;
String filterableString ;
for (int i = 0; i < count; i++) {
filterableString = list.get(i);
if (filterableString.toLowerCase().contains(filterString)) {
nlist.add(filterableString);
/*int ii = i;
counterFilter++;
while(childList.get(ii)!=null) {
nlistChild.put(nlist.get(counterFilter),);
ii++;
}*/
}
}
results.values = nlist;
results.count = nlist.size();
return results;
}
输出很好...但是子项不符合父项。我不知道该怎么做..我想我必须找到一种替代方法将子项添加到列表中,而不是以下现有方法..
listDataChild.put(listDataHeader.get(0), Afghanistan);//Header,Child data
listDataChild.put(listDataHeader.get(1), Albania);
listDataChild.put(listDataHeader.get(2), Algeria);
listDataChild.put(listDataHeader.get(3), Andorra);
listDataChild.put(listDataHeader.get(4), Angola);
listDataChild.put(listDataHeader.get(5), Anguilla);
有什么帮助吗?
【问题讨论】:
标签: android expandablelistview android-filterable