从基础适配器的android设置菜单图标

时间:2016-01-05 11:29:43

标签: android adapter base

我有一个带有自定义列表视图的Android应用程序。 要将数据放入此列表视图中,我使用基本适配器。

在我的基础适配器中,我有一个OnCheckedChangeListener。 每当我选中/取消选中我的列表视图的复选框时,我会计算+1 / -1 pref" DeleteCheckboxesCount"

但我想隐藏我的基本适配器中的菜单项,如果" DeleteCheckboxesCount" == 0

如何从基本适配器访问我的自定义列表视图类(Main.class)的菜单图标

SelectCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                if (SelectCheckBox.isChecked() == true) {
                    SharedPreferences.Editor editor = prefs.edit();
                    editor.putInt("DeleteCheckboxesCount", prefs.getInt("DeleteCheckboxesCount", 0) + 1);
                    editor.commit();

                } else {

                    SharedPreferences.Editor editor = prefs.edit();
                    editor.putInt("DeleteCheckboxesCount", prefs.getInt("DeleteCheckboxesCount", 0) - 1);
                    editor.commit();

                }
            }
        });

1 个答案:

答案 0 :(得分:0)

最简单的方法可能是传递适配器构造函数中的Activity,然后调用Activity::invalidateOptionsMenu

然后,您可以在适配器中创建getDeleteCheckboxCount方法,以便在活动onCreateOptionsMenu内查看。

您的活动中有类似的内容:

mAdapter = new MyAdapter( this, ... );

然后:

@Override public void onCreateOptionsMenu(...) {
if ( mAdapter.getDeleteCheckboxCount > 0 ) { 
   ... 
} else {
   ...
}

并在mActivity.invalidateOptionsMenu()中致电OnCheckedChangedListener