我目前正在制作使用 ExpandableListView
的应用程序以及 CursorTreeAdapter
提供的游标。在我的数据库中,我有这些国家的国家和城市。
现在我想实现 SearchView
多亏了它我才能搜索特定的城市。棘手的是,当我搜索时,我只想显示相关城市所在的组(国家)。我不想显示空组。
现在我的主要 Activity 中有国家/地区的 Loader
,结果数据从那里插入到我正在加载城市的 CursorTreeAdapter
实现中。目前我只找到this在 ExpandlableListView
中搜索的博客,但没有实现任何隐藏空组的机制。
这就是我的表格的样子
Countries table
|ID|Name
City table
|ID|countryID|Name
有人知道如何实现吗?
最佳答案
一个简单的解决方案是在基地行动..
您可能会从 db 返回仅具有关联城市的那些组,并带有连接子句:
select co.*
from Countries co
inner join City c on (co.ID = c.countryID)
但是如果你听起来不是个好主意..
另一个解决方案是检查行在适配器 MyListAdapter
的方法 getGroupView
中的可见性(我指的是示例的 blog)
@Override
public View getGroupView(int groupPosition, boolean isLastChild, View view, ViewGroup parent) {
...
view.setVisibility((continent.getCountryList().size() == 0) ? View.GONE : View.VISIBLE);
...
return view;
}
否则...
阅读类似的帖子:
ExpandableListView is showing indicator for groups with no child
在bindGroupView
中检查是否有子元素并将信息保存在对象 View 的标签上,
然后 newChildView
接受标签,获得可见性并使 View 可见或不可见(如我之前所说)
关于android - android ExpandableListView 中的搜索实现仅显示不为空的结果组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23854301/