ListFragment 中的 MultiChoiceModeListener 不起作用?使用 onListItemClick 作为替代

MultiChoiceModeListener in ListFragment not working? Use onListItemClick as alternative

我有一个带有 MultiChoice listView 的 ListFragment。我想将选择的数量限制为 3。为此,我在我的 onViewCreated 中实现了一个 MultiChoiceModeListener。出于某种原因,监听器不工作?

但是; onListItemClick 有效吗?

(作为替代方案:有没有一种方法可以在 onListItemClick 中跟踪已检查和未检查且限制为 3 的情况?)

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();
        }
}...

-感谢任何 help/clues。

这可能对某人有所帮助...我选择了替代方案并使用 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();
        }