我正在努力实现ExpandableListAdapter。
用例:
我有要添加到Expandable列表但没有子项的组项。问题是每个组项都可以被点击,即使它们不包含子项。
有没有办法禁用/灰显可扩展按钮以指示用户它不包含子项?
目前我已实施:
public void onGroupExpanded(int groupPosition) {
if (!containsChildren(groupPosition)) {
Toast.makeText(context, context.getString(R.string.err_no_children), Toast.LENGTH_LONG).show();
}
}
我宁愿拥有如上所述的视觉效果(禁用/灰显可扩展按钮),如果他们点击它就会显示此Toast。因为您可以点击groupItem的那一刻,它会尝试只展开零项,这看起来很傻?或者这是默认的良好MMI [1]行为?
答案 0 :(得分:0)
我已经使用(在ExpandableListActivity
中关闭群组指标,如果您有常规活动,请在列表中手动执行):
getExpandableListView().setGroupIndicator(null);
然后在您正在实施的getGroupView()
方法中检查您要查看的群组是否有任何子女(我使用的是列表列表,因此它非常直接)和相应地设置组的视图(也可以创建自己的扩展按钮)。您可能需要使用父级和convertView设置来查看哪种方式最适合您。
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
convertView = inflater.inflate(
android.R.layout.simple_expandable_list_item_1, parent,
false);
if (groups.get(groupPosition).getMuscles().size() == 0) {
convertView.setEnabled(false); //Greys out group name
}
答案 1 :(得分:0)
还有其他方法可以通过设置onGroupClickListener
并为没有孩子的组返回true来实现此目的。
myExpandableList.setOnGroupClickListener(new OnGroupClickListener(){
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id){
// TODO Auto-generated method stub.
if(!myAdapter.containsChildren(groupPosition)){
return true;
}else{
return false;
}
}});