0

我有一个画廊活动,在 onCreate 方法中设置图像的文件路径以显示如下:

      // Set up an array of the Thumbnail Image ID column we want
            String[] projection = {MediaStore.Images.Media._ID};
            // Create the cursor pointing to the SDCard
            cursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                    projection, // Which columns to return
                    MediaStore.Images.Media.DATA + " like ? ",
                    new String[] {"%LC/images%"},  
                    MediaStore.Images.Media._ID + " DESC");


            // Get the column index of the Thumbnails Image ID
            columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);


            ga.setAdapter(new GallAdapter(this,cursor,columnIndex));


public class GallAdapter extends BaseAdapter {
        public Cursor cursor;
        private int columnIndex;
        private Context context;
        int imageBackground;
        String url;
        Uri uri;
        int originalImageId;
        int imageID;
        int columnData;
        ViewGroup myp;
        ImageView d;

        public GallAdapter(Context ctx, Cursor cur, int cIn ) {
            context = ctx;
            columnIndex = cIn;

            cursor = cur;
        }

        @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) {
            myp = parent;
            View v;
            if(convertView ==null){
                v = LayoutInflater.from(context).inflate(R.layout.galitem, parent, false);
            }else{
                v = convertView;
            }


            ImageView photo = (ImageView) v.findViewById(R.id.imageView);
            ImageView border = (ImageView) v.findViewById(R.id.borderView);
            d = (ImageView) v.findViewById(R.id.delView);



            // Move cursor to current position
            cursor.moveToPosition(position);

            // Get the current value for the requested column
            imageID = cursor.getInt(columnIndex);
            // obtain the image URI
            uri = Uri.withAppendedPath( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID) );
            url = uri.toString();
            // Set the content of the image based on the image URI
            originalImageId = Integer.parseInt(url.substring(url.lastIndexOf("/") + 1, url.length()));
            Bitmap b = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(),
                            originalImageId, MediaStore.Images.Thumbnails.MINI_KIND, null);
            photo.setImageBitmap(b);

            photo.setScaleType(ImageView.ScaleType.FIT_CENTER); 
            d.setTag(uri);
            d.setOnClickListener(new OnClickListener(){


                public void onClick(View v) {

                    String path = getRealPathFromURI((Uri) v.getTag());
                    alertBox("Warning!", "Are you sure you want to delete this photo?", path, v);


                }


            });

            return v;
        }

    }

问题是它没有在画廊中显示最新的图像,有时它什么也不显示,或者有时它显示不再存在的旧图像

4

0 回答 0