2012-03-30 5 views
1

zu sortieren Ich habe eine funktionierende benutzerdefinierte Kamera und Galerieansicht in meiner Android App. Meine Kamera speichert Bilder mit einem Zeitstempel im Wesentlichen als ihren Namen in einem bestimmten Ordner, den ich erfolgreich in meiner Galerie gezeigt habe. Es scheint, dass es diese Bilder standardmäßig vom ältesten zum neuesten oder alphabetisch sortiert, nicht sicher .. aber ich möchte, dass sie in der umgekehrten Reihenfolge angezeigt werden .. kann mir jemand in die richtige Richtung zeigen? ist es möglich? ich meine BaseAdapter oder meine oncreate meiner Galerie Aktivität ...Gibt es eine Möglichkeit, Bilder nach Datum in Galerie Android

meine Galerie Aktivität ändern:

public class GalleryView extends Activity{ 

    ImageView imageView; 
    Cursor cursor; 
    private int columnIndex; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.gallery); 
     Gallery ga = (Gallery)findViewById(R.id.Gallery01); 
     // 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%"}, 
       null); 
     // Get the column index of the Thumbnails Image ID 
     columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID); 

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



    } 



} 

Adapter meine Gewohnheit:

public class GallImageAdapter extends BaseAdapter { 
    public Cursor cursor; 
    private int columnIndex; 
    private Context context; 
    int imageBackground; 

    public GallImageAdapter(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) { 
     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); 
     ImageView d = (ImageView) v.findViewById(R.id.delView); 

     // Move cursor to current position 
     cursor.moveToPosition(position); 
     // Get the current value for the requested column 
     int imageID = cursor.getInt(columnIndex); 
     // obtain the image URI 
     Uri uri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID)); 
     String url = uri.toString(); 
     // Set the content of the image based on the image URI 
     int 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); 

     return v; 
    } 

} 

Antwort

0

dies versuchen und lassen Sie mich wissen, ob es funktioniert

final String orderBy = MediaStore.Images.Media._ID; 

cursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
      projection, // Which columns to return 
      MediaStore.Images.Media.DATA + " like ? ", 
      new String[] {"%LC/images%"}, 
      orderBy + " DESC");