2016-04-05 10 views
1

Cursor私はギャラリーから画像を取得し、ギャラリーからすべての画像を取得するために、過去20枚の画像など、最近の画像を取得する方法はありません。ContentResolverを使用してギャラリーから最近の画像を取得する

もう一つの問題は、画像が古いものから新しいものへと変化していることに直面しています。逆の順序で画像を取得したい(新しいものから古いもの)。

final String[] columns = { MediaStore.Images.Media.DATA, 
       MediaStore.Images.Media._ID }; 
final String orderBy = MediaStore.Images.Media._ID; 

私のコードでは、画像を取得する:

public void getImg(){ 
    Cursor imagecursor = getContentResolver().query(
      MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, 
      null, orderBy); 

    int image_column_index = imagecursor 
      .getColumnIndex(MediaStore.Images.Media._ID); 
    this.count = imagecursor.getCount(); 
    this.thumbnails = new Bitmap[this.count]; 
    this.arrPath = new String[this.count]; 
    this.thumbnailsselection = new boolean[this.count]; 
    for (int i = 0; i < this.count; i++) { 
     imagecursor.moveToPosition(i); 
     int id = imagecursor.getInt(image_column_index); 
     int dataColumnIndex = imagecursor 
       .getColumnIndex(MediaStore.Images.Media.DATA); 
     thumbnails[i] = MediaStore.Images.Thumbnails.getThumbnail(
       getApplicationContext().getContentResolver(), id, 
       MediaStore.Images.Thumbnails.MICRO_KIND, null); 
     arrPath[i] = imagecursor.getString(dataColumnIndex); 
    } 
    GridView imagegrid = (GridView) findViewById(R.id.PhoneImageGrid); 
    imageAdapter = new ImageAdapter(); 
    imagegrid.setAdapter(imageAdapter); 
    imagecursor.close(); 
} 

マイアダプタ:

public class ImageAdapter extends BaseAdapter { 
    private LayoutInflater mInflater; 

    public ImageAdapter() { 
     mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    public int getCount() { 
     return count; 
    } 

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

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

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      holder = new ViewHolder(); 
      convertView = mInflater.inflate(R.layout.galleryitem, null); 
      holder.imageview = (ImageView) convertView 
        .findViewById(R.id.thumbImage); 
      holder.checkbox = (CheckBox) convertView 
        .findViewById(R.id.itemCheckBox); 

      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     holder.checkbox.setId(position); 
     holder.imageview.setId(position); 
     holder.checkbox.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       CheckBox cb = (CheckBox) v; 
       int id = cb.getId(); 
       if (thumbnailsselection[id]) { 
        cb.setChecked(false); 
        thumbnailsselection[id] = false; 
       } else { 
        cb.setChecked(true); 
        thumbnailsselection[id] = true; 
       } 
      } 
     }); 

     holder.imageview.setImageBitmap(thumbnails[position]); 
     holder.checkbox.setChecked(thumbnailsselection[position]); 
     holder.id = position; 
     return convertView; 
    } 
} 

class ViewHolder { 
    ImageView imageview; 
    CheckBox checkbox; 
    int id; 
} 
+0

https://github.com/amirarcan e/recent-images –

+0

ありがとうございました。私はこれをチェックします:) – HAXM

答えて

2

query()への引数によって順序、ドキュメントごとに、声明によるSQLの順序としてフォーマットされます。デフォルトの昇順とは対照的に、降順の値をしたい場合は、次の操作を行います。

final String orderBy = MediaStore.Images.Media._ID + " DESC"; 

しかし、あなたは、具体的順序として日付を使用してについて尋ねたので、あなたはおそらく、この代わりにしたい:

final String orderBy = MediaStore.Images.Media.DATE_ADDED + " DESC"; 
あなただけのOrderByと20の最新のをしたい場合、あなたはそれを行うことができますダグの答えに加えて
+0

ありがとうございました。私の主な問題はわずかな画像しか得られないため、ギャラリーの画像のアプリは遅いsometinesに行く、私は、画像を要求するだけで、待ち時間を防ぐことができると思います – HAXM

+0

http://stackoverflow.com/questions/12640480/specifying-limit-offset-for-contentprovider-queries –

+0

私は使用しようとしましたしかし、私はそれを使用する場合私はorderByを削除する必要があり、私のアプリはそれを使用するためにクラッシュしている任意のよりよい解決に感謝されます。 – HAXM

1

、:

final String orderBy = MediaStore.Images.Media.DATE_ADDED + " DESC LIMIT 20";

+0

ご協力ありがとうございました – HAXM

関連する問題