首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏木宛城主

    Unity应用架构设计(6)——设计动态数据集合ObservableList

    实现自定义的ObservableList 既然核心在于构建通知机制,谈到『通知』两字,最常见的形式就是以委托或者事件形式将消息广播给监听者。 既然要以数据来驱动界面,首先我们需要定义能存放数据的集合,它就是ObservableList,并且是实现了IList 接口: public class ObservableList<T>:IList<T 到目前为止,我们自定义的动态数据集合ObservableList是非常好的设计,但唯一不足的事,它不能支持初始化时通知UI界面更新。 『初始化』 这词可能有点太术语了,我翻译一下就是一般初始化一个List,我们都是像如下方式进行: public ObservableList<FaceBox> DataSource = new ObservableList OK,我们增强一下ObservableList: public class ObservableList<T>:IList<T> { //省略部分代码...

    1.6K70发布于 2018-01-11
  • 来自专栏求索之路

    MVVM架构之自动增删改的极简RecycleView的实现

    = null) { if (this.items instanceof ObservableList) { ((ObservableList<T>) this.items = null && items instanceof ObservableList) { ((ObservableList<T>) items).addOnListChangedCallback = null && items instanceof ObservableList) { ((ObservableList<T>) items).removeOnListChangedCallback 3.List<T> items:这个就是数据源,一般我们都是传一个ObservableList或者其子类。这样能保证数据源增删的时候自动刷新界面。 这几个方法是在UiViewModel中的监听器中调用的 ,我们可以看见我只是根据position增删改了ObservableList中的数据。

    2.4K72发布于 2018-05-02
  • 来自专栏javafx框架tornadofx

    在tornadofx中使用javafx并发框架示例

    .* import javafx.beans.binding.When import javafx.collections.ObservableList import javafx.concurrent.Worker Create the service // ScheduledService在任务执行成功或失败后可自动重启 private var service: ScheduledService<ObservableList <Long>> = object : ScheduledService<ObservableList<Long>>() { override fun createTask(): Task <ObservableList<Long>> { return PrimeFinderTask() } } var onceStarted = false <Long>> = object : Service<ObservableList<Long>>() { override fun createTask(): Task<ObservableList

    1.7K10发布于 2019-10-10
  • 来自专栏憧憬博客分享

    设计模式 | 观察者模式

    (); } // ///** // * 猪肉 // * Class Pork // */ //class Pork implements Observable { // // public $observableList as $k => $v) { // if ($v === $observer) { // unset($this->observableList[$ ; public function addObserver(Observer $observer) { $this->observableList[] = $observer ; } public function deleteObserver(Observer $observer) { foreach ($this->observableList as $k => $v) { if ($v === $observer) { unset($this->observableList[$k]);

    55620发布于 2020-07-20
  • 来自专栏10km的专栏

    jface databinding:可多选的widget List组件selection项目与java.util.List对象的双向数据绑定

    observableList.contains("banana"))observableList.add("banana"); } }); btnAdd.setBounds 绑定在一起 bindingContext.bindList(observeSelectedListObserveWidget, observableList, null, null); // 为查看数据对象observableList的内容,将之与Label组件进行单向绑定, // observableList的内容变化能及时显示在Label中 ISideEffect.create( observableList::size, (s)->{ lblSelected.setText(String.join (",", observableList)); }); return bindingContext; } } 注意 ListSelectedItemsProperty1

    1.1K80发布于 2018-01-03
  • c#开发的ref和watch实现--轻松完成响应式开发--

    propertyName) { return new ObservableProperty<T>(initialValue, this, propertyName); } public ObservableList <T> RefList<T>(IList<T> initialValue, string propertyName) { var list = new ObservableList< observable.NotifyPropertyChange(_propertyName, oldValue, value); } } }}public class ObservableList T>{ private readonly Observable _observable; private readonly string _propertyName; public ObservableList nameof(Time)); }我这段使用的是单例模式,所以用了一个构造函数,这样方便管理与维护如果力邀使用较为特殊的情况,需要监听每一项值得变化得话你可以使用如下方式: public ObservableList

    28412编辑于 2024-08-22
  • 来自专栏从0使用Kuikly框架写小红书Demo

    从0使用Kuikly框架写一个小红书Demo-Day4

    // 组件内容描述 WaterfallList { // 瀑布流配置 } }}响应式数据绑定通过observable和observableList ,实现数据与UI的自动同步,当数据发生变化时,UI会自动更新,无需手动操作DOM:private var messageList: ObservableList<MessageItem> by observableList ComposeView<WaterfallMessagePageAttr, WaterfallMessagePageEvent>() { private var messageList: ObservableList <MessageItem> by observableList<MessageItem>() private var selectedTabIndex: Int by observable(0)

    23920编辑于 2025-10-13
  • 来自专栏Java Web

    JavaFX-TableView详解

    observableArrayList()); } // 第二个构造函数 public TableView(ObservableList items) { getStyleClass TableColumn.CellEditEvent<Map, String> t) { System.out.println("检测到改变"); // 这里修改维护的对应的设置进TableView的ObservableList 处理列拖动后的事件 if (c.wasRemoved()) { // 定义一个保存了现在列排序的集合 List<TableColumn<ObservableList new ArrayList<>(table.getColumns()); // 定义一个保存了原来列排序的集合 List<TableColumn<ObservableList

    4.1K60发布于 2018-04-26
  • 来自专栏明明如月的技术专栏

    Using JavaFX UI Controls 12 Table View

    你可以创建ObservableList 数组随心所欲的定义数据行(data rows) 在你的表格中展示 例12-4 的代码片段实现了这个任务: Example 12-4 Defining Table Data in an Observable List final ObservableList data = FXCollections.observableArrayList( new Person 因为ObservableList 对象能够跟踪表格元素的任何变化,当其中的数据变化,TableView 的内容也自动更新。 javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList generateDataInMap() { int max = 10; ObservableList allData = FXCollections.observableArrayList

    12.7K20发布于 2021-08-27
  • 来自专栏Spring相关

    一文看懂观察者模式及案例详解

    extends Subject { /** * 上课状态 */ private String state; private List<Observer> observableList = new ArrayList<>(); @Override public void doNotify() { for (Observer observer : observableList state); } } @Override public void addObservable(Observer observable) { observableList.add null) { throw new Exception("要移除的被观察者不能为空"); } else { if (observableList.contains System.out.println("下课了,"+observable.getIdentity()+" 已回到办公室"); observableList.remove

    97020发布于 2019-10-23
  • 来自专栏loongwind

    Android基于DataBinding封装RecyclerView实现快速列表开发

    类型,则为其添加 changeCallback 回调 if (data is ObservableList<*>) { // 如果 listener 为空则创建 <ObservableList<T>>() { @SuppressLint("NotifyDataSetChanged") override fun onChanged(sender: ObservableList<T>) { adapter.notifyDataSetChanged() } override fun onItemRangeRemoved (sender: ObservableList<T>, positionStart: Int, itemCount: Int) { adapter.notifyItemRangeRemoved 则为其添加changeCallback if (data is ObservableList<*>) { if (listener == null

    3.5K30编辑于 2022-09-27
  • 来自专栏CSDN迁移

    观察者模式——Java实例

    具体主题角色类  1 public class HanFeiZi implements Observable,IHanFeiZi{ 2 private ArrayList<Observer> observableList 3 4 @Override 5 public void addObserver(Observer observable) { 6 this.observableList.add } 8 9 @Override 10 public void deleteObserver(Observer observable) { 11 this.observableList.remove @Override 15 public void notifyObserviers(String context) { 16 for(Observer observer : observableList

    38130编辑于 2022-10-25
  • 来自专栏javafx框架tornadofx

    吃鱼小游戏,可以让小朋友练习键盘方向键和鼠标,采用javafx框架tornadofx实现

    javafx.scene.text.FontWeight import javafx.animation.AnimationTimer import javafx.beans.Observable import javafx.collections.ObservableList briefcase.render(gc) moneybagList.map { it.render(gc) } } } fun initFish():ObservableList

    1.2K30发布于 2019-09-04
  • 来自专栏吴技术的云开发

    JavaFX实现列表添加图片

    "file:C://chat/1.gif"); imageView.setImage(image); contentLabelList.add(imageView); ObservableList

    7.3K31发布于 2021-05-25
  • 来自专栏Java开发

    JavaFX 与 Java Swing 桌面应用开发实战指南

    JavaFX Properties 实现视图模型层,支持数据绑定: // BookViewModel.java public class BookViewModel { private final ObservableList books.setAll(updatedBooks) ) ); } // Getters public ObservableList

    1.5K10编辑于 2025-06-25
  • 来自专栏javafx框架tornadofx

    javafx框架tornadofx入门实战22_treeview

    就像windows文件管理器左侧的一样 treeview.gif import javafx.collections.FXCollections import javafx.collections.ObservableList

    99940发布于 2020-03-25
  • 来自专栏Android机动车

    高效开发 MVVM 和 databinding 你需要使用的工具

    那么我们的数据是如何刷新的呢,这就要用到上面的items这个属性了,在我们这个例子里,它是这样定义的: public final ObservableList<Object> viewModels = new ObservableArrayList<>(); 当我们网络请求返回的时候,我们在数据回调里,通过对数据类型的处理,进行ItemViewModel的构造,最后只需要将构造好的对象一个个添加到这个ObservableList

    86320发布于 2018-08-03
  • 来自专栏码字搬砖

    JavaFx-TableView

    */ private final TableView<Person> table = new TableView<>(); //由于ObservableList对象具有自动追踪其包含元素的改变的功能 private final ObservableList<Person> data = FXCollections.observableArrayList( new Person("Jacob

    4.6K10发布于 2021-03-02
  • 来自专栏WeaponZhi

    高效开发 MVVM 和 databinding 你需要使用的工具

    那么我们的数据是如何刷新的呢,这就要用到上面的items这个属性了,在我们这个例子里,它是这样定义的: public final ObservableList<Object> viewModels = ObservableArrayList<>(); 当我们网络请求返回的时候,我们在数据回调里,通过对数据类型的处理,进行 ItemViewModel 的构造,最后只需要将构造好的对象一个个添加到这个 ObservableList

    1.5K90发布于 2018-03-07
  • 来自专栏10km的专栏

    jface databinding:label provider 实现多列表格(Table)数据绑定的两个途径

    getValue0,getValue1方法用于分别获取两个成员变量 IObservableList<Pair<Integer,String>> input=createInput();// 创建ObservableList org.eclipse.core.internal.databinding.Pair没有getter方法获取类成员变量 IObservableList<Pair> input=createInput();// 创建ObservableList

    2K100发布于 2018-01-03
领券