package com.kiritor; import java.util.HashMap; import java.util.Map; import java.util.Set; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.ActionMode; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView.LayoutParams; import android.widget.AbsListView.MultiChoiceModeListener; import android.widget.BaseAdapter; import android.widget.Checkable; import android.widget.FrameLayout; import android.widget.GridView; import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.TextView; public class HomeActivity extends Activity implements MultiChoiceModeListener { private GridView mGridView; private GridAdapter mGridAdapter; private TextView mActionText; private static final int MENU_SELECT_ALL = 0; private static final int MENU_UNSELECT_ALL = MENU_SELECT_ALL + 1; private Map<Integer, Boolean> mSelectMap = new HashMap<Integer, Boolean>(); private int[] mImgIds = new int[] { R.drawable.img_1, R.drawable.img_2, R.drawable.img_3, R.drawable.img_4, R.drawable.img_5, R.drawable.img_6, R.drawable.img_7, R.drawable.img_8, R.drawable.img_9, R.drawable.img_1, R.drawable.img_2, R.drawable.img_3, R.drawable.img_4, R.drawable.img_5, R.drawable.img_6, R.drawable.img_7, R.drawable.img_3, R.drawable.img_4, R.drawable.img_5, R.drawable.img_5 }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mGridView = (GridView) findViewById(R.id.gridview); mGridView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE_MODAL);// 设置为多选模式 mGridAdapter = new GridAdapter(this); mGridView.setAdapter(mGridAdapter);// 数据适配 mGridView.setMultiChoiceModeListener(this);// 设置多选模式监听器 } /** Override MultiChoiceModeListener start **/ @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { // TODO Auto-generated method stub // 得到布局文件的View View v = LayoutInflater.from(this).inflate(R.layout.actionbar_layout, null); mActionText = (TextView) v.findViewById(R.id.action_text); // 设置显示内容为GridView选中的项目个数 mActionText.setText(formatString(mGridView.getCheckedItemCount())); // 设置动作条的视图 mode.setCustomView(v); // 得到菜单 getMenuInflater().inflate(R.menu.action_menu, menu); return true; } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { // TODO Auto-generated method stub /* 初始状态下,如果选中的项数不等于总共的项数,设置"全选"的状态为True */ menu.getItem(MENU_SELECT_ALL).setEnabled( mGridView.getCheckedItemCount() != mGridView.getCount()); return true; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { // TODO Auto-generated method stub /* * 当点击全选的时候,全选 点击全不选的时候全不选 */ switch (item.getItemId()) { case R.id.menu_select: for (int i = 0; i < mGridView.getCount(); i++) { mGridView.setItemChecked(i, true); mSelectMap.put(i, true); } break; case R.id.menu_unselect: for (int i = 0; i < mGridView.getCount(); i++) { mGridView.setItemChecked(i, false); mSelectMap.clear(); } break; } return true; } @Override public void onDestroyActionMode(ActionMode mode) { // TODO Auto-generated method stub mGridAdapter.notifyDataSetChanged(); } @Override public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { // TODO Auto-generated method stub // 当每个项状态改变的时候的操作 mActionText.setText(formatString(mGridView.getCheckedItemCount())); mSelectMap.put(position, checked);/* 放入选中的集合中 */ mode.invalidate(); } /** Override MultiChoiceModeListener end **/ private String formatString(int count) { return String.format(getString(R.string.selection), count); } private class GridAdapter extends BaseAdapter { private Context mContext; public GridAdapter(Context ctx) { mContext = ctx; } @Override public int getCount() { // TODO Auto-generated method stub return mImgIds.length; } @Override public Integer getItem(int position) { // TODO Auto-generated method stub return Integer.valueOf(mImgIds[position]); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @SuppressWarnings("deprecation") @Override /* 得到View */ public View getView(int position, View convertView, ViewGroup parent) { GridItem item; if (convertView == null) { item = new GridItem(mContext); item.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); } else { item = (GridItem) convertView; } item.setImgResId(getItem(position)); item.setChecked(mSelectMap.get(position) == null ? false : mSelectMap.get(position)); return item; } } }
最近下载更多
2252391595 LV1
1月18日
wanglong_wang LV13
2022年3月16日
caigenjiang LV1
2020年5月12日
恋伊love LV9
2018年12月17日
seriousalpha2018 LV1
2018年12月13日
qingkuankuan LV1
2018年7月24日
103155 LV1
2018年7月22日
分位数 LV2
2018年6月18日
Mclnt0sh LV1
2018年3月27日
yinshilin LV1
2018年3月12日
最近浏览更多
2252391595 LV1
1月18日
sks666 LV5
2023年2月19日
uni-code_0123 LV1
2022年11月16日
wanglong_wang LV13
2022年3月16日
lingtiejing LV15
2022年2月23日
wyx065747 LV67
2021年1月3日
a566566 LV9
2020年12月27日
cuiaaaaaa LV1
2020年12月12日
wangyaru LV1
2020年6月26日
doremi LV6
2020年6月17日