Android BaseExpandableListAdapter-对没有子项的groupitems禁用onclick
我正在努力实现一个ExpandableListAdapter 用例: 我有组项要添加到可扩展列表中,但没有子项。问题是,每个组项都可以被单击,即使它们不包含子项 是否有办法禁用/灰显可展开按钮,以向用户指示它不包含子项 目前,我已实施:Android BaseExpandableListAdapter-对没有子项的groupitems禁用onclick,android,onclick,expandablelistadapter,Android,Onclick,Expandablelistadapter,我正在努力实现一个ExpandableListAdapter 用例: 我有组项要添加到可扩展列表中,但没有子项。问题是,每个组项都可以被单击,即使它们不包含子项 是否有办法禁用/灰显可展开按钮,以向用户指示它不包含子项 目前,我已实施: public void onGroupExpanded(int groupPosition) { if (!containsChildren(groupPosition)) { Toast.makeText(context, contex
public void onGroupExpanded(int groupPosition) {
if (!containsChildren(groupPosition)) {
Toast.makeText(context, context.getString(R.string.err_no_children), Toast.LENGTH_LONG).show();
}
}
我希望有一个如上所述的视觉效果(禁用/灰显可展开按钮),如果他们点击它,就会显示这个土司。因为在你点击groupItem的那一刻,它试图只展开零个项目,这看起来很愚蠢?或者这是默认的良好MMI[1]行为
[1] 我已求助于使用关闭组指示器(在
ExpandableListActivity
中,如果您有常规活动,请在列表中手动执行此操作):
然后,在您正在实现的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
}
我已求助于使用(在
ExpandableListActivity
中,如果您有常规活动,请在列表中手动关闭组指示器):
然后,在您正在实现的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
}
另一种方法是设置
onGroupClickListener
并为没有child的组返回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;
}
}});
另一种方法是设置
onGroupClickListener
并为没有child的组返回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;
}
}});
指标呢?如何让它仅显示在有子组的组中,并在单击此类组时更改它?请尝试使用
getChildrenCount(int groupPosition)
方法。如果它返回0-hide indicator.no,我认为通过普通的getGroupView已经可以了,因为它有一个布尔值,表示它是否被扩展。不管怎样,谢谢你的帮助。指示器呢?如何让它仅显示在有子组的组中,并在单击此类组时更改它?请尝试使用getChildrenCount(int groupPosition)
方法。如果它返回0-hide indicator.no,我认为通过普通的getGroupView已经可以了,因为它有一个布尔值,表示它是否被扩展。无论如何,谢谢你的帮助。