首页 > 其他分享 >ObservableList 的用处

ObservableList 的用处

时间:2023-09-06 11:11:47浏览次数:33  
标签:observableList List ObservableList 用处 println true change

ObservableList  可观察的List,可以监听

  1. List排列顺序改变
  2. List中的数据发生改变(数据更新)
  3. List的数据添加及删除(数据新增或删除)

我自己的理解就是,类似于ajax的无刷新界面。因为你这个list跟前台界面绑定了,要是之前,你要重新绑定一下,然后刷新界面。现在有了这个类,就无需刷新界面,它会自动监听相关list进行事件处理。

 

1.排列更新监听

顺序排列更新,对应的change.wasPermutated(),其返回值为boolean值,当ObservableList的顺序发生变化(即进行了排序操作),此方法就会返回为true

fun main() {
    val observableList = observableListOf(0,1,2,3)
    println(observableList)
    observableList.onChange { change ->
        while (change.next()) {
            when {
                change.wasPermutated() -> println("permutated (${change.from} ,${change.to})")
                
                change.wasReplaced() -> println("replace (${change.from} ,${change.to})")
                else -> {
                    when {
                        change.wasAdded() -> println("add (${change.from} ,${change.to})")
                        change.wasRemoved() -> println("remove (${change.from} ,${change.to})")
                        change.wasUpdated() -> println("update (${change.from} ,${change.to})")
                    }
                }
            }
        }
    }
    observableList.sortBy { it }
    println(observableList)
    observableList.sortByDescending { it }
    println(observableList)
}

对应的输出结果为:

[0, 1, 2, 3]  //源数组
permutated (0 ,4) //回调监听器中的方法
[0, 1, 2, 3] //升序排列
permutated (0 ,4) 
[3, 2, 1, 0] //降序排列

2.数据更新监听(replace)

这里大家可能会有点疑惑,最上面的代码不是有个wasUpdated()方法吗,这里怎么标的是replace?

我自己研究的时候,也是很奇怪...官方的那个wasUpdated()方法没有找到对应的回调方式,照理说我更新了数组中的一个数据,这个wasUpdated()应该返回的是true,但是实际测试的时候根本没有,反而是wasReplaced()返回了true

//上面省略相关代码...
//JavaFx对应是set(index,element)方法
observableList[1] = 12 //下标为1的对象更新为12
println(observableList)

输出结果:

[0, 1, 2, 3]
replace (1 ,2)
[0, 12, 2, 3]

3.数据添加与删除监听(add remove)

数据添加和删除就和上面同理了,当我们调用add()(包括addAll())和remove()方法,对应的wasAdd()wasRemove()方法就会返回true

另外,ObservableList提供了两个List供我们拿到添加的数据和移除的数据

  • change.addedSubList 新增的数据列表
  • change.removed 被移除的数据列表

 

文章参考:JavaFx ObservableList的使用详解 - Stars-one - 博客园 (cnblogs.com)

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back

标签:observableList,List,ObservableList,用处,println,true,change
From: https://www.cnblogs.com/Lonelychampion/p/17681759.html

相关文章

  • java的反射到底是有什么用处?怎么用?
    首先,明白静态语言与动态语言的区别Java是一门静态语言,但是反射提供了一种黑魔法,允许在运行时去动态修改一个类的定义,一个对象的属性等等,给静态语言加上了“动态”的效果Java反射可以简单的理解为Class的一种抽象,我们知道,Java是面向对象语言,一切皆对象,都是某种抽象,可以理解反射就是......
  • iOS学习之--字符串的删除替换(字符串的常用处理,删除,替换)
    字符串操作,比较简单,仅做记录!1、删除NSString*str1=@"<hello,word!>";//删除字符串两端的尖括号NSMutableString*mString=[NSMutableStringstringWithString:str1];//第一个参数是要删除的字符的索引,第二个是从此位开始要删除的位数[mStringdeleteCh......
  • C#应用处理传入参数 - 开源研究系列文章
    今天介绍关于C#的程序传入参数的处理例子。      程序的传入参数应用比较普遍,特别是一个随操作系统启动的程序,需要设置程序启动的时候不显示主窗体,而是在后台运行,于是就有了传入参数问题,比如传入/h或者/min等等。所以此文就介绍一下关于程序传入参数的处理问题。......
  • linux内网穿透应用场景有哪些?快解析有什么用处?
    随着网络技术的不断发展,无论是工作上还是在生活中人们对网络的依赖和需求越来越高。Linux内网穿透作为一种创新的解决方案,为我们提供了无限可能。首先我们了解一下Linux操作系统。Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程......
  • 软链接的用处
    1.移动文件夹,又在原来位置做个软链接,可以正常使用代码比如移动conda,因为conda所占据的空间很大,移动后做个软链接还是一样的。比如把一些数据移出home,也可以做个软链接到原来位置。2.训练模型时候的数据集做软链接因为我们的数据经常存在硬盘别的位置,就需要修改对......
  • 一文讲清楚表单制作工具的用处
    如果想要提升表格制作效率和质量,用什么样的工具可以实现这一目的?在低代码开发时代,应用在线表单制作工具可以给广大用户提升办公协作效率,摒弃传统表格效率低下、制作不灵活等劣势,实现高效率发展。针对广大用户朋友关心的话题,小编就表单制作工具的优点、作用等问题,给大家做一个详细......
  • SQLServer低版本附加高版本的数据库常用处理方法
    SqlServer低版本数据库不能直接还原或附加Sql高版本数据库或备份文件,我们常用DTS互导的方式,如果不同版本数据库不可访问,可以使用高版本数据库的DTS导出整个库的相应低版本建库脚本与数据,然后放在低版本数据库中去执行,常见如:我们库数据库一般是SqlServer2008+,有的客户使用的是2005版......
  • 如何利用ObservableList为TableView添加Add和Del功能
    如何利用ObservableList为TableView添加Add和Del功能TableView的记录可以绑定到一个ObservableList。ObservableList是一种列表数据结构,继承自List。很多JavaFX控件都可以用ObservableList管理动态数据。利用ObservableList可以为TableView提供增加和删除数据的......
  • C#引用类型带ref关键字的用处
    1.在C#中有两个大的数据类型,值类型和引用类型。1)任何的结构体(例如:structInt32...)或者是枚举都是值类型。2)能被称作"类"的,则为引用类型,比如你用如下关键字(class、interface、delegate、record),或者是使用C#内置的引用类型:dynamic、object、string。引用类型和值类型。引用类......
  • 软件工程方法论对我们经软件开发有多大用处
    首先,我认为软件工程方法论对我们软件开发用处极大。软件工程工程方法论有四种,即瀑布模型、迭代式开发、螺旋开发和敏捷开发。1.瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型,瀑布式开发是一种老旧的计算机软件开发方法。瀑布模型式是最典型的预见性的方法,严格遵循预先计......