android 日期大小排序,Android - 按日期排序图像

我在Android上尝试简单的东西 . 我从外部存储器获取图像并将其保存在阵列中 . 我想要做的是显示按日期排序的所有图像 . 我使用Reyclerview来显示图像 . 知道如何按日期排序吗?

Example of my code

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

rvImages = (RecyclerView)findViewById(R.id.rvPictures);

imageLists = getFilePaths();

setAdapter(imageLists);

}

public ArrayList getFilePaths()

{

Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

String[] projection = {MediaStore.Images.ImageColumns.DATA};

Cursor c = null;

SortedSet dirList = new TreeSet();

ArrayList resultIAV = new ArrayList();

String[] directories = null;

if (u != null)

{

c = managedQuery(u, projection, null, null, null);

}

if ((c != null) && (c.moveToFirst()))

{

do

{

String tempDir = c.getString(0);

tempDir = tempDir.substring(0, tempDir.lastIndexOf("/"));

try{

dirList.add(tempDir);

}

catch(Exception e)

{

Log.d("MainActivity",e.getMessage().toString());

}

}

while (c.moveToNext());

directories = new String[dirList.size()];

dirList.toArray(directories);

}

for(int i=0;i

{

File imageDir = new File(directories[i]);

File[] imageList = imageDir.listFiles();

if(imageList == null)

continue;

for (File imagePath : imageList) {

try {

if(imagePath.isDirectory())

{

imageList = imagePath.listFiles();

}

if ( imagePath.getName().contains(".jpg")|| imagePath.getName().contains(".JPG")

|| imagePath.getName().contains(".jpeg")|| imagePath.getName().contains(".JPEG")

|| imagePath.getName().contains(".png") || imagePath.getName().contains(".PNG") )

{

String path= imagePath.getAbsolutePath();

resultIAV.add(path);

}

}

// }

catch (Exception e) {

e.printStackTrace();

}

}

}

return resultIAV;

}

public class ImageViewAdapter extends RecyclerView.Adapter{

private LayoutInflater inflater;

private Context context;

private ArrayList data;

public ImageViewAdapter(Context context, ArrayList data){

this.context = context;

this.inflater = LayoutInflater.from(context);

this.data = data;

}

@NonNull

@Override

public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

View v = inflater.inflate(R.layout.image_item,parent,false);

return new ImageViewHolder(v);

}

@Override

public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {

String imgSrc = data.get(position);

Uri imageUri = Uri.parse(imgSrc);

Log.d("MainActivity:ImagUri: ",imageUri.toString());

holder.imgView.setImageURI(imageUri);

}

@Override

public int getItemCount() {

return data.size();

}

}

public class ImageViewHolder extends RecyclerView.ViewHolder{

private ImageView imgView;

public ImageViewHolder(View itemView){

super(itemView);

imgView = (ImageView)itemView.findViewById(R.id.imgView);

}

}

解决方案可能在光标中?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要按类型查找Android文件管理,可以使用MediaStore类。MediaStore是Android提供的一个媒体库,可以管理设备上的音频、视频、图片和其他文件。可以通过它来查询特定类型的文件,例如图片或音频文件。以下是一个示例代码: ``` Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; String[] projection = {MediaStore.Images.Media.DATA}; String selection = MediaStore.Images.Media.MIME_TYPE + "=?"; String[] selectionArgs = {"image/jpeg"}; String sortOrder = MediaStore.Images.Media.DATE_ADDED + " DESC"; Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder); if (cursor != null) { while (cursor.moveToNext()) { String filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)); // Do whatever you want with filePath } cursor.close(); } ``` 在这个例子中,我们使用MediaStore.Images.Media.EXTERNAL_CONTENT_URI获取所有外部存储设备上的图片。然后,我们将投影设置为仅包含MediaStore.Images.Media.DATA列,这是图像文件的路径。我们使用MediaStore.Images.Media.MIME_TYPE条件过滤结果,以仅返回JPEG图像。最后,我们使用MediaStore.Images.Media.DATE_ADDED对结果进行排序,以便最新的图像出现在顶部。当查询完成后,我们可以遍历游标并处理每个图像的路径。 这只是一个简单的示例,你可以根据你的需求进行修改。同样的方法也适用于其他类型的文件,如音频文件或视频文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值