2016-01-05 8 views
0

У меня есть приложение для Android с пользовательским списком видов. Чтобы поместить данные в этот список, я использую базовый адаптер.значок меню Android с базового адаптера

В моем базовом адаптере у меня есть OnCheckedChangeListener. каждый раз, когда я проверял/снял флажок с моего списка, я подсчитываю +1/-1 префикс «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

Самый простой подход, вероятно, будет проходить в Activity в конструкторе вашего адаптера , а затем позвоните по номеру Activity::invalidateOptionsMenu.

Затем вы можете создать способ getDeleteCheckboxCount в своем адаптере, который вы проверите внутри своей деятельности onCreateOptionsMenu.

Нечто подобное в вашей деятельности:

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

И потом:

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

И позвони mActivity.invalidateOptionsMenu() в вашем OnCheckedChangedListener.