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

时间:2011-03-10 09:47:19

标签: android onclick expandablelistadapter

我正在努力实现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]行为?

[1] http://en.wikipedia.org/wiki/Man-machine_interface

2 个答案:

答案 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;                   
                }
            }});