我有一个带有自定义列表视图的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();
}
}
});
答案 0 :(得分:0)
最简单的方法可能是传递适配器构造函数中的Activity
,然后调用Activity::invalidateOptionsMenu
。
然后,您可以在适配器中创建getDeleteCheckboxCount
方法,以便在活动onCreateOptionsMenu
内查看。
您的活动中有类似的内容:
mAdapter = new MyAdapter( this, ... );
然后:
@Override public void onCreateOptionsMenu(...) {
if ( mAdapter.getDeleteCheckboxCount > 0 ) {
...
} else {
...
}
并在mActivity.invalidateOptionsMenu()
中致电OnCheckedChangedListener
。