Android 在自定义视图中显示最近保存的文件

Android 在自定义视图中显示最近保存的文件,android,android-custom-view,displayobject,Android,Android Custom View,Displayobject,我正在开发android应用程序来制作动画gif。在这个应用程序中,我想在自定义视图中显示创建的gif。我做了“显示gif”活动,当gif被创建并保存在“myFile”文件夹的sd卡中时,该活动显示最近保存的gif。在自定义视图中,我使用以下代码获取最后一个gif: String ExternalStorageDirectoryPath = Environment .getExternalStorageDirectory() .getAbsolutePath();

我正在开发android应用程序来制作动画gif。在这个应用程序中,我想在自定义视图中显示创建的gif。我做了“显示gif”活动,当gif被创建并保存在“myFile”文件夹的sd卡中时,该活动显示最近保存的gif。在自定义视图中,我使用以下代码获取最后一个gif:

String ExternalStorageDirectoryPath = Environment
        .getExternalStorageDirectory()
        .getAbsolutePath();

String targetPath = ExternalStorageDirectoryPath + "/myFile";

File targetDirector = new File(targetPath);

File[] listFile = targetDirector.listFiles();

Arrays.sort( listFile, new Comparator()
{
    public int compare(Object o1, Object o2) {

        if (((File)o1).lastModified() > ((File)o2).lastModified()) {
            return -1;
        } else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
            return +1;
        } else {
            return 0;
        }
    }

}); 

String s = listFile[0].getAbsolutePath();


mMovie = Movie.decodeFile(s);
String ExternalStorageDirectoryPath=Environment
.getExternalStorageDirectory()
.getAbsolutePath();
字符串targetPath=ExternalStorageDirectoryPath+“/myFile”;
文件targetDirector=新文件(targetPath);
File[]listFile=targetDirector.listFiles();
sort(listFile,newcomparator()
{
公共整数比较(对象o1、对象o2){
如果(((文件)o1.lastModified()>((文件)o2.lastModified()){
返回-1;
}else if(((文件)o1.lastModified()<((文件)o2.lastModified()){
返回+1;
}否则{
返回0;
}
}
}); 
字符串s=listFile[0]。getAbsolutePath();
mMovie=Movie.decode文件;

这不起作用,但当我使用“listFile[1].getAbsolutePath();”时,它对以前保存的gif有效,而不是新的gif!有更好的方式显示最新的gif吗?

您不注意ASC和DESC排序。您可以通过
listfile[listfile.lentgh-1]
或 您必须使用from“reverseOrder”。使压缩机等级如下所示:

public class ObjectComparator implements Comparator<Object> {

@Override
   public int compare(Object o1, Object o2) {
    if (((File)o1).lastModified() > ((File)o2).lastModified()) {
        return -1;
    } else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
        return +1;
    } else {
        return 0;
    } if (((File)o1).lastModified() > ((File)o2).lastModified()) {
        return -1;
    } else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
        return +1;
    } else {
        return 0;
    }
}

如果你想了解更多关于数组和排序的信息,你可以使用

你在使用适配器吗..???你想获取上次保存的gif文件吗?保留最新保存的文件的引用,并通过get Method从类中返回它谢谢你的回答。我尝试了“ObjectComparator”类,该类可以反转数组,以便通过使用“listFile[0]”获取最早的“gif”文件。在这里,自定义视图完美地显示gif,但当我使用“listFile[listFile.length-1]”获取最新的gif文件时,自定义视图不会显示。@Majidji是否检查此项的值?它是否已填充且正确?在尝试您的代码后,我正确地获得了最新保存的gif,因此当我按下“下一步”按钮时,gif已保存,然后我转到具有自定义视图的“DisplayActivity”。然后gif不会显示,但当我“一次或多次”重新创建活动时,它最终会显示@majidjiji这不是数组和排序的问题。看来,你需要失效或其他解决方案。你可以在其他帖子里问你的新问题。
Comparator<Object> descendingObjectComparator = Collections.reverseOrder(new ObjectComparator());
  Arrays.sort(listFile , descendingObjectComparator);