按大小、日期、名称等在回收器视图中排序并记住选择

2024-05-10

我正在制作图库应用程序,我想为其添加排序功能,我可以使用以下命令在运行时对项目进行排序Comparator但问题是,每当我退出应用程序时,列表都会再次从数据库中出来,并且所有列表都未排序,我想在我的应用程序中提供按日期、大小、名称等排序的选项,你们能帮助我如何查看这个并记住用户的选择吗?他下次运行该应用程序时,我还阅读了有关排序列表的内容,请告诉我我的问题的解决方案或当前的任何示例代码,我正在这样做以对项目进行排序

public static final Comparator<MediaFileObject> byName=new Comparator<MediaFileObject>() {
    @Override
    public int compare(MediaFileObject o1, MediaFileObject o2) {

        return o1.getAddedDate().compareTo(o2.getAddedDate());
    }
};

我在我的片段中称之为

Collections.sort(list,MediaFileObject.byName);
galleryAdapter.notifyDataSetChanged()

这工作正常,但我想记住用户排序选择请有人帮助我该怎么办? 我可以通过使用来实现这一点吗SortedList?或任何示例代码请


这可以帮助您根据名称和日期对列表进行排序。

if (theArrayList.size() > 0) {
            if (myUserSelectedSortedType == SORT_BY_NAME) {
                sortListByName(theArrayList);
            } else if (myUserSelectedSortedType == SORT_BY__DATE) {
                sortListByDate(theArrayList);
            }


            myAdapter = new Adapter(MainActivity.this, theArrayList);
            myListView.setAdapter(myAdapter);
        }


    private void sortListByName(ArrayList<CustomerEvents> theArrayListEvents) {

          Collections.sort(theArrayListEvents, new EventDetailSortByName());
    }


     private class EventDetailSortByName implements java.util.Comparator<CustomerEvents> {
        @Override
        public int compare(CustomerEvents customerEvents1, CustomerEvents customerEvents2) {
            String name1, name2;
            name1 = customerEvents1.getMyCustomerName().toLowerCase().trim();
            name2 = customerEvents2.getMyCustomerName().toLowerCase().trim();
            return name1.compareTo(name2);
        }
    }


     private void sortListByDate(ArrayList<CustomerEvents> theArrayListEvents) {
            Collections.sort(theArrayListEvents, new EventDetailSortByDate()); 
    }



    private class EventDetailSortByDate implements java.util.Comparator<CustomerEvents> {
        @Override
        public int compare(CustomerEvents customerEvents1, CustomerEvents customerEvents2) {
            Date DateObject1 = StringToDate(customerEvents1.getMyDOB());
            Date DateObject2 = StringToDate(customerEvents2.getMyDOB());

            Calendar cal1 = Calendar.getInstance();
            cal1.setTime(DateObject1);
            Calendar cal2 = Calendar.getInstance();
            cal2.setTime(DateObject2);

            int month1 = cal1.get(Calendar.MONTH);
            int month2 = cal2.get(Calendar.MONTH);

            if (month1 < month2)
                return -1;
            else if (month1 == month2)
                return cal1.get(Calendar.DAY_OF_MONTH) - cal2.get(Calendar.DAY_OF_MONTH);

            else return 1;
        }
    }


     public static Date StringToDate(String theDateString) {
        Date returnDate = new Date();
        if (theDateString.contains("-")) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm");
            try {
                returnDate = dateFormat.parse(theDateString);
            } catch (ParseException e) {
                SimpleDateFormat altdateFormat = new SimpleDateFormat("dd-MM-yyyy");
                try {
                    returnDate = altdateFormat.parse(theDateString);
                } catch (ParseException ex) {
                    ex.printStackTrace();
                }
            }
        } else {
            SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");
            try {
                returnDate = dateFormat.parse(theDateString);
            } catch (ParseException e) {
                SimpleDateFormat altdateFormat = new SimpleDateFormat("dd/MM/yyyy");
                try {
                    returnDate = altdateFormat.parse(theDateString);
                } catch (ParseException ex) {
                    ex.printStackTrace();
                }
            }
        }
        return returnDate;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按大小、日期、名称等在回收器视图中排序并记住选择 的相关文章

随机推荐

  • 使用 laravel 检查活动用户状态

    这是非常标准的登录功能和验证 效果很好 但我还想检查用户是否处于活动状态 我在用户表中设置了一列 并将 活动 设置为 0 或 1 public function post login input Input all rules array
  • 不使用窗口函数实现 SQL 查询

    我读过 可以通过创造性地使用连接等来实现在 SQL 窗口函数中可以执行的任何操作 但我不知道如何实现 我在这个项目中使用 SQLite 它目前没有窗口函数 我有一个有四列的表 CREATE TABLE foo id INTEGER PRIM
  • 如何在 Groovy 中设置最后一个字段

    我有一个在 groovy spock 中测试的 java 类 java 类有一个final 字段 private static final log Logger getLogger 我想测试一个方法是否使用此记录器 最好使用模拟 问题是这个
  • 如何从 ASP.NET 中的 DetailsView 控件获取值?

    我的页面上有详细信息视图 我设置DefaultMode Edit 现在我想获取用户将在此单元格中编辑的值
  • 在 Laravel 5.4 中选择下拉列表的选定值

    我有一个名为 名称 的下拉列表 用户将在其中选择其中一个 提交后 如果出现一些错误 那么我想选择所选的名称 我在 laravel 5 4 中使用它 控制器 info DB table designation gt where status
  • Flutter - 每次应用程序重新启动后保留变量的值

    在我的一页上 我希望我的用户从一个变量上的默认文本开始 codeDialog 然后我希望他们更改该文本 之后他们编写的文本将成为我的新默认文本 遗憾的是我无法让它发挥作用 现在 当我重新启动应用程序并打开该屏幕时 它会重置为null 我认为
  • PHP 特性 - 定义通用常量

    定义可由命名空间内的多个类使用的常量的最佳方法是什么 我试图避免过多的继承 因此扩展基类不是理想的解决方案 并且我正在努力寻找使用特征的良好解决方案 这在 PHP 5 4 中是否可行 或者应该采取不同的方法 我有以下情况 trait Bas
  • 记录此异常并处理它,或者使用一些上下文信息重新抛出它

    有人可以帮我解释为什么 SonarLint 会显示这个 要么记录此异常并处理它 要么使用一些上下文信息重新抛出它 对于下面的代码 public static
  • 如何在 Hadoop 中将 String 对象转换为 IntWritable 对象

    我想转换String反对IntWritableHadoop 中的对象 任何过程都可以进行转换 IntWritable value new IntWritable Integer parseInt someString 并处理以下可能性par
  • android widget 和 localservice 绑定

    我编写播放器 它的主要活动是运行本地服务 我找不到如何将本地服务绑定到小部件 当我尝试像在活动中一样绑定它时 它失败了 请帮助我 添加 1 何时可以联系后台服务 http www developer com ws data article
  • NSAttributedString 和表情符号:位置和长度问题

    我正在使用 NSAttributedString 对来自 API 的文本的某些部分 如 Twitter 上的 mention 进行着色 API 为我提供了文本和代表文本中应着色的部分 或链接 标签等 的实体数组 但有时 颜色会因为表情符号而
  • Scala - Java = ? (或者 Clojure - Java = ?)

    开发人员可以在不懂 Java 的情况下使用 Scala 吗 开发人员可以在不懂 Java 的情况下使用 Clojure 吗 注意 例如 我是一名 C 开发人员 我在不了解任何 VB 的情况下使用 NET 当然 WF 4 0 使用 VB 进行
  • 与竞争的消费者顺序处理消息

    Problem 我以特定顺序 FIFO 在队列上接收消息 比如订单 我的队列中有竞争的消费者 为了进一步增加复杂性 消费者可能只对订单的特定版本感兴趣 具体取决于其状态 例如版本 1 版本 2 和版本 5 订单版本号在订单上可用 但不能用于
  • PHP:如何获取
    中的名称值

    有没有办法获取form标签中name属性的值 我正在使用 PHP 但在 中没有看到它 POST 有没有办法获取form标签中name属性的值 我正在使用 PHP 但在 POST 中没有看到它 不 表单的名称属性永远不会设置为作为 POST
  • 尝试从 Django 模板更改语言时出现问题

    我需要包含两个按钮或链接以允许用户在英语和西班牙语之间更改语言 我读了the docs https docs djangoproject com en 1 5 topics i18n translation the set language
  • 在旧版本的 API 上更改 ContentObserver Onchange 上的 uri [重复]

    这个问题在这里已经有答案了 可能的重复 如何获取内容观察器中插入行的 URI https stackoverflow com questions 8432800 how to get uri of inserted row in my co
  • 如何在没有外部库的情况下以 Polymer 方式处理悬停?

    我想我需要做类似的事情 li blah li 因为处理点击看起来像这样 li blah li 我尝试使用此处文档中显示的方式 声明式事件映射 http www polymer project org docs polymer polymer
  • 如何发布和接收 NSNotifications(目标 C) |通知(Swift 中)?

    是否有一种易于理解的模式如何发送 NSNotification 目标 C 通知 Swift 中 以及如何接收通知 代码片段 文档关于这个主题写了大约 150 页 想看一个简单的例子 发送通知 NSNotificationCenter def
  • 简单的跨平台 TCP IP API?

    我不打算使用像 QT 或 wxWidgets 的 API 这样的大东西 我只想要可以在 Android iOS Windows Mac Linux 上运行的简单套接字 我正在制作一个事件驱动的纸牌游戏 所以 TCP 是最好的 本质上 我只想
  • 按大小、日期、名称等在回收器视图中排序并记住选择

    我正在制作图库应用程序 我想为其添加排序功能 我可以使用以下命令在运行时对项目进行排序Comparator但问题是 每当我退出应用程序时 列表都会再次从数据库中出来 并且所有列表都未排序 我想在我的应用程序中提供按日期 大小 名称等排序的选