Android 如何选择多个图像getid(如:MediaStore.image.thoumble.\u ID)

Android 如何选择多个图像getid(如:MediaStore.image.thoumble.\u ID),android,android-activity,Android,Android Activity,我想处理图像结构,我想知道当我选择多个图像时如何获取图像id我使用上下文操作模式 请回答我的问题 公共类GalleryImage扩展活动{ GridView gridView; ImageAdapter imageAdapter; private Cursor cursor; protected Object mActionMode; private int columnIndex; String[] projection = { MediaStore.Images.Thumbnails._ID

我想处理图像结构,我想知道当我选择多个图像时如何获取图像id我使用上下文操作模式 请回答我的问题

公共类GalleryImage扩展活动{

GridView gridView;
ImageAdapter imageAdapter;
private Cursor cursor;
protected Object mActionMode;
private int columnIndex;
String[] projection = { MediaStore.Images.Thumbnails._ID };
 String Tag ="sample";

@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.galleryimages);
    gridView = (GridView) findViewById(R.id.lvImagesGallery);
    imageAdapter = new ImageAdapter(this);

    cursor = getContentResolver().query(
            MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection,
            null, null, MediaStore.Images.Thumbnails.IMAGE_ID);
    columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);



    gridView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    gridView.setAdapter(imageAdapter);
        final ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            mode=null;
        }

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            getMenuInflater().inflate(R.menu.contextual_menu, menu);
            return true;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch (item.getItemId()) {

            case R.id.add_Tag:
                int nr = 0;
                //imageAdapter.clearSelection();
                mode.finish();
        }
        return false;
        }

    };

    gridView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            ActionMode mode =startActionMode(mActionModeCallback);
             mode.setTitle(gridView.getCheckedItemCount() + " Selected");
             gridView.setSelected(true);


        }
    });
    /*listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
             startActionMode(mActionModeCallback);
             listView.setSelected(true);
             return true;
        }
    });*/
}



class ImageAdapter extends BaseAdapter {
    LayoutInflater layout;
    private Context context;

    public ImageAdapter(Context context) {
        this.context = context;
        layout = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {


        return cursor.getCount();
    }

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView picturesView;

        if (convertView == null) {
            convertView = layout.inflate(R.layout.gridimage, null);

        }
        picturesView = (ImageView) convertView
                .findViewById(R.id.ivGalleryImage);
        cursor.moveToPosition(position);
        int imageID = cursor.getInt(columnIndex);
        picturesView.setImageURI(Uri.withAppendedPath(
                MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""
                        + imageID));
        return convertView;
    }
}
}

更改gridView.SetChoiceModelListView.CHOICE\u MODE\u MULTIPLE;到

网格视图可以返回图像的id和相对于网格视图而不是相对于xml的位置

获取栅格视图中图像的id的步骤

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                Toast.makeText(getApplicationContext(), "id and position = "+id+" "+position, Toast.LENGTH_LONG).show();
            }

        });
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                Toast.makeText(getApplicationContext(), "id and position = "+id+" "+position, Toast.LENGTH_LONG).show();
            }

        });