This demo illustrates the use of CHOICE_MODE_MU...

/*
  * Copyright (C) 2010 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *      http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
package  com.example.android.apis.view;

import  com.example.android.apis.R;

import  android.app.Activity;
import  android.content.Context;
import  android.content.Intent;
import  android.content.pm.ResolveInfo;
import  android.os.Bundle;
import  android.view.ActionMode;
import  android.view.Menu;
import  android.view.MenuItem;
import  android.view.View;
import  android.view.ViewGroup;
import  android.widget.BaseAdapter;
import  android.widget.Checkable;
import  android.widget.FrameLayout;
import  android.widget.GridView;
import  android.widget.ImageView;

import  java.util.List;

/**
  * This demo illustrates the use of CHOICE_MODE_MULTIPLE_MODAL, a.k.a. selection mode on GridView.
  */
public class  Grid3  extends  Activity  {

     GridView mGrid;

     @Override
     protected  void  onCreate ( Bundle savedInstanceState ) {
         super .onCreate ( savedInstanceState ) ;

         loadApps () ;

         setContentView ( R.layout.grid_1 ) ;
         mGrid =  ( GridView findViewById ( R.id.myGrid ) ;
         mGrid.setAdapter ( new  AppsAdapter ()) ;
         mGrid.setChoiceMode ( GridView.CHOICE_MODE_MULTIPLE_MODAL ) ;
         mGrid.setMultiChoiceModeListener ( new  MultiChoiceModeListener ()) ;
     }

     private  List<ResolveInfo> mApps;

     private  void  loadApps () {
         Intent mainIntent =  new  Intent ( Intent.ACTION_MAIN,  null ) ;
         mainIntent.addCategory ( Intent.CATEGORY_LAUNCHER ) ;

         mApps = getPackageManager () .queryIntentActivities ( mainIntent,  0 ) ;
     }

     public class  AppsAdapter  extends  BaseAdapter  {
         public  AppsAdapter () {
         }

         public  View getView ( int  position, View convertView, ViewGroup parent ) {
             CheckableLayout l;
             ImageView i;

             if  ( convertView ==  null ) {
                 i =  new  ImageView ( Grid3. this ) ;
                 i.setScaleType ( ImageView.ScaleType.FIT_CENTER ) ;
                 i.setLayoutParams ( new  ViewGroup.LayoutParams ( 50 50 )) ;
                 l =  new  CheckableLayout ( Grid3. this ) ;
                 l.setLayoutParams ( new  GridView.LayoutParams ( GridView.LayoutParams.WRAP_CONTENT,
                         GridView.LayoutParams.WRAP_CONTENT )) ;
                 l.addView ( i ) ;
             else  {
                 l =  ( CheckableLayout convertView;
                 i =  ( ImageView l.getChildAt ( 0 ) ;
             }

             ResolveInfo info = mApps.get ( position ) ;
             i.setImageDrawable ( info.activityInfo.loadIcon ( getPackageManager ())) ;

             return  l;
         }


         public final  int  getCount () {
             return  mApps.size () ;
         }

         public final  Object getItem ( int  position ) {
             return  mApps.get ( position ) ;
         }

         public final  long  getItemId ( int  position ) {
             return  position;
         }
     }

     public class  CheckableLayout  extends  FrameLayout  implements  Checkable  {
         private  boolean  mChecked;

         public  CheckableLayout ( Context context ) {
             super ( context ) ;
         }

         public  void  setChecked ( boolean  checked ) {
             mChecked = checked;
             setBackgroundDrawable ( checked ?
                     getResources () .getDrawable ( R.drawable.blue )
                     null ) ;
         }

         public  boolean  isChecked () {
             return  mChecked;
         }

         public  void  toggle () {
             setChecked ( !mChecked ) ;
         }

     }

     public class  MultiChoiceModeListener  implements  GridView.MultiChoiceModeListener  {
         public  boolean  onCreateActionMode ( ActionMode mode, Menu menu ) {
             mode.setTitle ( "Select Items" ) ;
             mode.setSubtitle ( "One item selected" ) ;
             return true ;
         }

         public  boolean  onPrepareActionMode ( ActionMode mode, Menu menu ) {
             return true ;
         }

         public  boolean  onActionItemClicked ( ActionMode mode, MenuItem item ) {
             return true ;
         }

         public  void  onDestroyActionMode ( ActionMode mode ) {
         }

         public  void  onItemCheckedStateChanged ( ActionMode mode,  int  position,  long  id,
                 boolean  checked ) {
             int  selectCount = mGrid.getCheckedItemCount () ;
             switch  ( selectCount ) {
             case  1 :
                 mode.setSubtitle ( "One item selected" ) ;
                 break ;
             default :
                 mode.setSubtitle ( ""  + selectCount +  " items selected" ) ;
                 break ;
             }
         }

     }
}


//grid_1.xml


<?xml version= "1.0"  encoding= "utf-8" ?>
<!-- Copyright  ( C 2007  The Android Open Source Project

      Licensed under the Apache License, Version  2.0  ( the  "License" ) ;
      you may not use  this  file except in compliance with the License.
      You may obtain a copy of the License at
  
           http: //www.apache.org/licenses/LICENSE-2.0
  
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an  "AS IS"  BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License  for  the specific language governing permissions and
      limitations under the License.
-->

<GridView xmlns:android= "http://schemas.android.com/apk/res/android"  android:id= "@+id/myGrid"
   android:layout_width= "match_parent" 
   android:layout_height= "match_parent"
     android:padding= "10dp"
     android:verticalSpacing= "10dp"
    
     android:horizontalSpacing= "10dp"
     android:numColumns= "auto_fit"
     android:columnWidth= "60dp"
     android:stretchMode= "columnWidth"
    
     android:gravity= "center"
     />

你可能感兴趣的:(This demo illustrates the use of CHOICE_MODE_MU...)