Java MultiChoiceModelListener不工作

Java MultiChoiceModelListener不工作,java,android,listview,Java,Android,Listview,我正在尝试为从列表视图中选择多个项目实现MultichoiceModelListener。我目前的进展如下所示。但它不起作用。即使长时间按压,它也不起作用。我的代码中有什么遗漏或错误吗?任何帮助都将不胜感激 public class FragmentFavorite extends Fragment { ListView lvFavoriteItems; Activity mActivity = null; Context mContext; ArrayList

我正在尝试为从
列表视图中选择多个项目实现
MultichoiceModelListener
。我目前的进展如下所示。但它不起作用。即使长时间按压,它也不起作用。我的代码中有什么遗漏或错误吗?任何帮助都将不胜感激

public class FragmentFavorite extends Fragment {

    ListView lvFavoriteItems;
    Activity mActivity = null;
    Context mContext;
    ArrayList<String> names = new ArrayList<>(Arrays.asList("My name is a", "My name is b",
            "My name is c", "My name is d", "My name is e", "My name is f"));
    ArrayList<String> phone = new ArrayList<>(Arrays.asList("9895653263", "9895653264", "9895653265",
            "9895653266", "9895653267", "9895653267"));

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if(mActivity == null) {
            this.mActivity = getActivity();
        }
        this.mContext = context;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.favorite_list, container, false);
        lvFavoriteItems = (ListView) root.findViewById(R.id.lv_item_list);
        FavoriteAdapter fav = new FavoriteAdapter();
        lvFavoriteItems.setAdapter(fav);
        lvFavoriteItems.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
        lvFavoriteItems.setMultiChoiceModeListener(new FavMultiChoiceModeListener());
        return root;
    }

    private class FavoriteAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            return names.size();
        }

        @Override
        public Object getItem(int i) {
            return null;
        }

        @Override
        public long getItemId(int i) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup viewGroup) {
            View listItem;
            LayoutInflater inflater = (LayoutInflater) mContext
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            if (convertView == null) {
                listItem = inflater.inflate(R.layout.contact_item_2_line, null);
            } else {
                listItem = convertView;
            }
            TextView tv1 = (TextView) listItem.findViewById(R.id.tv_item_name);
            tv1.setText(names.get(position));
            TextView tv2 = (TextView) listItem.findViewById(R.id.tv_phone);
            tv2.setText(phone.get(position));
            listItem.setId(position);
            return listItem;
        }    }

    private class FavMultiChoiceModeListener implements ListView.MultiChoiceModeListener {

        @Override
        public void onItemCheckedStateChanged(ActionMode mode, int i, long l, boolean b) {
            final int checkedCount = lvFavoriteItems.getCheckedItemCount();
            mode.setSubtitle("" + checkedCount + " items selected ");
        }

        @Override
        public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
            MenuInflater inflater = mActivity.getMenuInflater();
            inflater.inflate(R.menu.selection_menu, menu);
            actionMode.setTitle("Select Items");
            return true;

        }

        @Override
        public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
            return true;
        }

        @Override
        public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
            Toast.makeText(mActivity, "Clicked " + menuItem.getTitle(),
                    Toast.LENGTH_SHORT).show();
            return true;
        }

        @Override
        public void onDestroyActionMode(ActionMode actionMode) {

        }
    }
}
公共类片段{
ListView lvFavoriteItems;
Activity mActivity=null;
语境;
ArrayList names=新的ArrayList(Arrays.asList)(“我的名字是a”,“我的名字是b”,
“我的名字是c”,“我的名字是d”,“我的名字是e”,“我的名字是f”);
ArrayList phone=新的ArrayList(Arrays.asList(“9895653263”、“9895653264”、“9895653265”),
"9895653266", "9895653267", "9895653267"));
@凌驾
公共void-onAttach(上下文){
super.onAttach(上下文);
if(mActivity==null){
this.mActivity=getActivity();
}
this.mContext=上下文;
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图根=充气机。充气(R.layout.favorite\u列表,容器,false);
lvFavoriteItems=(ListView)root.findViewById(R.id.lv\u item\u list);
FavoriteAdapter fav=新的FavoriteAdapter();
lvFavoriteItems.setAdapter(fav);
lvFavoriteItems.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE\u MODE);
SetMultichoiceModelListener(新FAVMultiChoiceModelListener());
返回根;
}
私有类FavoriteAdapter扩展了BaseAdapter{
@凌驾
public int getCount(){
返回names.size();
}
@凌驾
公共对象getItem(int i){
返回null;
}
@凌驾
公共长getItemId(int i){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组视图组){
查看列表项;
LayoutFlater充气器=(LayoutFlater)mContext
.getSystemService(上下文布局\充气机\服务);
if(convertView==null){
listItem=充气机。充气(R.layout.contact\u item\u 2\u行,空);
}否则{
listItem=convertView;
}
TextView tv1=(TextView)listItem.findViewById(R.id.tv\u item\u name);
tv1.setText(names.get(position));
TextView tv2=(TextView)listItem.findViewById(R.id.tv\u电话);
tv2.setText(phone.get(position));
setId(位置);
返回列表项;
}    }
私有类FavMultiChoiceModelListener实现ListView.MultiChoiceModelListener{
@凌驾
public void onItemCheckedStateChanged(ActionMode模式、int i、long l、boolean b){
final int checkedCount=lvFavoriteItems.getCheckedItemCount();
mode.setSubtitle(“+checkedCount+”所选项目”);
}
@凌驾
公共布尔onCreateActionMode(ActionMode ActionMode,菜单){
MenuInflater充气机=mActivity.getMenuInflater();
充气机。充气(右菜单。选择菜单,菜单);
actionMode.setTitle(“选择项”);
返回true;
}
@凌驾
公共布尔onPrepareActionMode(ActionMode ActionMode,菜单){
返回true;
}
@凌驾
公共布尔值onActionItemClicked(ActionMode ActionMode,MenuItem MenuItem){
Toast.makeText(mActivity,“单击”+menuItem.getTitle(),
吐司。长度(短)。show();
返回true;
}
@凌驾
公共void onDestroyActionMode(ActionMode ActionMode){
}
}
}

由于您是从BaseAdapter进行扩展,您可能需要在
getView
方法中调用
convertView.setLongClickable(true)

您好,您解决了这个问题吗?