2016-06-16 4 views
0

У меня есть ListFragment с MultiChoice listView. Я хотел бы ограничить количество вариантов до 3. Для этого я реализую MultiChoiceModeListener в моем onViewCreated. По какой-то причине Слушатель не работает?MultiChoiceModeListener в ListFragment не работает? Использовать onListItemClick как альтернативу

Однако; работает onListItemClick?

(В качестве альтернативы: есть ли способ, чтобы следить за проверил & снят с лимитом 3 в onListItemClick?)

public class PinnedSectionListFrag extends ListFragment {... 
... 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 

     setListAdapter(new SimpleAdapter(getActivity(), android.R.layout.simple_list_item_multiple_choice, android.R.id.text1)); 

     listView = getListView(); 

//  listView.setItemsCanFocus(false); 
     listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 

     listView.setMultiChoiceModeListener(new MultiChoiceModeListener() { 
      @Override 
      public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { 
       Log.e("PinnedSectionsList...","......"+position); 
      } 

      @Override 
      public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
       return false; 
      } 

      @Override 
      public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
       return false; 
      } 

      @Override 
      public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 

       Log.e("PinnedSectionsList...","...item........"+item); 

      } 

      @Override 
      public void onDestroyActionMode(ActionMode mode) { 

      } 
     }); 
    } 

...

@Override // Working.. 
public void onListItemClick(ListView l, View v, int position, final long id) { 
    Item item = (Item) getListView().getAdapter().getItem(position); 
    if (item != null) { 
     Toast.makeText(getActivity(), "Item " + position + ": " + item.text, Toast.LENGTH_SHORT).show(); 
    } else { 
     Toast.makeText(getActivity(), "Item " + position, Toast.LENGTH_SHORT).show(); 
     } 
}... 

-Спасибо за любую помощь/ключи.

ответ

0

Это может помочь кому-то ... Я пошел с альтернативой и использовал onListItemClick, чтобы отслеживать себя.

@Override 
public void onListItemClick(ListView l, View v, int position, final long id) { 
     if (selectedItems.size() < 2){ 
      selectedItems.add(item.text); 
      if (selectedItems.size() == 1) { 
       MyAppClass.getInstance().saveSharedSetting(getActivity(), "Titles", selectedItems.get(0)); 
      }else { 

MyAppClass.getInstance().saveSharedSetting(getActivity(), "Titles", TextUtils.join(", ", selectedItems)); 
      } 

      Log.e("onListItemClick()","Read Titles..."+MyAppClass.getInstance().readSharedSetting(getActivity(), "Titles","TitlesRead")); 
// 
     }else { 

       for (int i =0; i < selectedItems.size(); i++){ 
        if (selectedItems.get(i) == item.text){ 
         selectedItems.remove(i); 
        } 
      } 

      //    sparseBooleanArray.put(position, false);//.get(position) = false; 
      getListView().setItemChecked(position, false); 
      Toast.makeText(getActivity(), "Max 2 Items Reached ! - ", Toast.LENGTH_SHORT).show(); 
     } 
Смежные вопросы