Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android BaseExpandableListAdapter-对没有子项的groupitems禁用onclick_Android_Onclick_Expandablelistadapter - Fatal编程技术网

Android BaseExpandableListAdapter-对没有子项的groupitems禁用onclick

Android BaseExpandableListAdapter-对没有子项的groupitems禁用onclick,android,onclick,expandablelistadapter,Android,Onclick,Expandablelistadapter,我正在努力实现一个ExpandableListAdapter 用例: 我有组项要添加到可扩展列表中,但没有子项。问题是,每个组项都可以被单击,即使它们不包含子项 是否有办法禁用/灰显可展开按钮,以向用户指示它不包含子项 目前,我已实施: public void onGroupExpanded(int groupPosition) { if (!containsChildren(groupPosition)) { Toast.makeText(context, contex

我正在努力实现一个ExpandableListAdapter

用例:

我有组项要添加到可扩展列表中,但没有子项。问题是,每个组项都可以被单击,即使它们不包含子项

是否有办法禁用/灰显可展开按钮,以向用户指示它不包含子项

目前,我已实施:

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已经可以了,因为它有一个布尔值,表示它是否被扩展。无论如何,谢谢你的帮助。