Есть ли способ сортировки изображений по дате в галерее android - PullRequest
1 голос
/ 30 марта 2012

У меня есть работающая пользовательская камера и вид галереи в моем приложении для Android. Моя камера сохраняет изображения с отметкой времени, по существу, как их имя в определенной папке, которую я успешно показал в своей галерее. Кажется, что эти изображения по умолчанию сортируются от самых старых к самым новым или в алфавитном порядке, не уверен ... но я хотел бы, чтобы они отображались в обратном порядке ... кто-то может указать мне правильное направление? Является ли это возможным? изменить BaseAdapter или создание галереи ...

активность моей галереи:

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));



    }



}

мой пользовательский адаптер:

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;
    }

}

1 Ответ

0 голосов
/ 23 июня 2014

попробуйте и дайте мне знать, если это работает

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");
...