码迷,mamicode.com
首页 > 移动开发 > 详细

android-ActionMode使用

时间:2015-01-15 00:22:47      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

这几天一直接触ActionMode 的知识,这里就把自己接触到的知识点顺手记下来,以后肯定会用的找的

1.ActionMode的创建

private ActionMode.Callback mCallback = new ActionMode.Callback() {

        @Override
        public boolean onActionItemClicked(ActionMode arg0, MenuItem arg1) {
            final ArrayList<GridItem> selectItem = mAdapter.mSelectItem;
            if (arg1.getItemId() == R.id.menu_delete) {
                new AlertDialog.Builder(mContext)
                    .setTitle(mContext.getString(R.string.delete))
                    .setIcon(null)
                    .setMessage(mContext.getResources()
                            .getQuantityString(R.plurals.delete_selection, mAdapter.mSelectItem.size()))
                    .setPositiveButton(mContext.getString(R.string.ok), new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            DeleteImage da = new DeleteImage(selectItem);
                            da.execute();
                        }
                    })
                    .setNegativeButton(mContext.getString(R.string.cancel), new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                        }
                    }).show();
            } else if (arg1.getItemId() == R.id.menu_share) {
                Intent intent = computeSharingIntent();
                getActivity().startActivity(Intent.createChooser(intent, getString(R.string.share)));
            } else if (arg1.getItemId() == R.id.menu_select) {
                if (selectItem.size() == mGirdList.size()) {
                    clearGridList();
                } else {
                    selectAllGridList();
                }
                updateSelectNumber();
                mAdapter.notifyDataSetChanged();
            }
            return false;
        }

        @Override
public boolean onCreateActionMode(ActionMode arg0, Menu arg1) { LayoutInflater layoutInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);//添加普通的布局文件,大多是显示在顶上的---- View customView = layoutInflater.inflate(R.layout.funui_action_mode, null);//----->注意是LayoutInflater
            arg0.setCustomView(customView); mSelect
= (TextView) customView.findViewById(R.id.select); MenuInflater inflater = arg0.getMenuInflater();//注意跟上面的区别,这个是用来添加menu的
            inflater.inflate(R.menu.image_menu, arg1); //这里还可以用来设置里面的元素的状态,使用的方法是mSelectItem = menu.findItem(R.id.select_all);
           
return true; } @Override public void onDestroyActionMode(ActionMode arg0) { setSelectMode(false); mAdapter.notifyDataSetChanged(); } @Override public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) { return false; } };

解释

1.onActionItemClicked(),这个方法主要是用来定义ActionMode 中menu项点击事件的处理,MenuItem就是里面的元素,就像LinearLayout中的Button一样

2.onCreateActionMode(),这个方法主要是用来定义ActionMode中menu的显示,加载menu布局,如果想要隐藏其中的个别元素,也是在这里面处理的

 

自己想要添加一个全选功能,添加的代码如下

 

 private void cancelSelect() {    266
            for (Album album : mAlbumlist) {
            album.isSelected = false;    
            }    
            mAdapter.mSelectAlbum.clear();
            }    
                
            private void selectAll() {    
            mAdapter.mSelectAlbum.clear();
            for (Album album : mAlbumlist) {
            album.isSelected = true;
            mAdapter.mSelectAlbum.add(album);
            }    
            }

 

其实这个就是找到里面存储选中的listview,对这个listview进行操作就行了

 

android-ActionMode使用

标签:

原文地址:http://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_zj_15011523.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!