Docs 菜单
Docs 主页
/ /
Atlas Device SDKs
/ / /

类 RealmList

在此页面上

  • io.realm
  • 构造函数
  • 字段摘要
  • 方法摘要
  • 继承方法
  • 字段详细信息
  • baseRealm
  • 构造函数详细信息
  • 方法详细信息
  • 添加
  • addChangeListener
  • asChangesetObservable
  • asFlowable
  • 平均值
  • 清除
  • contains
  • createSnapshot
  • deleteAllFromRealm
  • deleteFirstFromRealm
  • deleteFromRealm
  • deleteLastFromRealm
  • first
  • 冻结
  • 获取
  • getRealm
  • IsFrozen
  • isLoaded
  • isManaged
  • isValid
  • 迭代器
  • last
  • listIterator
  • 负载
  • Max
  • maxDate
  • min
  • minDate
  • move
  • 删除
  • 删除全部
  • 删除所有变更监听器
  • removeChangeListener
  • size
  • sort
  • 总和
  • toString
  • WHERE
java.lang.Object

实现的接口:

RealmList 用于对io.realm.RealmObject中的一对多关系进行建模。 RealmList 有两种模式:托管模式和非托管模式。 在托管模式下,所有对象都会保留在 Realm 中,在非托管模式下,它会像普通的 ArrayList 一样工作。

只有 Realm 可以创建托管 RealmList。 每当更新底层 Realm 时,托管 RealmList 都会自动更新内容,并且只能使用io.realm.RealmObject的 getter 进行访问。

非托管 RealmList 可由用户创建,可包含托管和非托管 RealmObject。 这在处理 JSON 反序列化器(例如 GSON)或其他将值注入到类中的框架时非常有用。 可以使用Realm.copyToRealm(Iterable, ImportFlag...)方法将此列表中的非托管元素添加到 Realm 中。

RealmList包含的元素数量可以超过 Integer.MAX_VALUE 。 在这种情况下,您只能访问权限其中的前Integer.MAX_VALUE元素。

构造函数和描述

在非托管模式下创建 RealmList,其中的元素不受 Realm 控制。

E[] objects
)

在非托管模式下创建一个具有初始元素列表的 RealmList。

修饰符和类型
字段和描述
public final BaseRealm

baseRealm

此列表所在的BaseRealm实例。

警告:此字段仅供内部使用,不应使用。

修饰符和类型
方法和说明
公共布尔值
add (
E object
)

在此 List 的末尾添加指定对象。

public void
add (
int location,
E element
)

将指定对象插入此 List 的指定位置。

public void
public void
public <any>

返回一个 Rx Observable,用于监控对此 RealmList 的更改。

public <any>

返回一个监控此 RealmList 变更的 Rx Flowable。

公共双精度
String fieldName
)

返回给定字段的平均值。

public void

从此列表中删除所有元素,使其为空。

公共布尔值
Object object
)

如果列表在附加到 Realm 时包含指定元素,则返回true

从此OrderedRealmCollection创建快照。

公共布尔值

这将从底层 Realm 以及集合中删除集合中的所有对象。

公共布尔值

从 Realm 中删除第一个对象。

public void
int location
)

从 Realm 中删除给定索引处的对象。

公共布尔值

从 Realm 中删除最后一个对象。

公用E
E defaultValue
)

获取collection中的第一个对象。

公用E

获取collection中的第一个对象。

公共RealmList
公用E
get (
int location
)

返回此列表中指定位置的元素。

公共Realm

返回此collection所属的Realm 实例

公共布尔值
公共布尔值

检查collection是否已完成数据加载。

公共布尔值

检查collection是否由Realm托管。

公共布尔值

检查collection是否仍可有效使用,即Realm实例尚未关闭。

公用E
E defaultValue
)

从collection中获取最后一个对象。

公用E
last ()

从collection中获取最后一个对象。

int location
)
公共布尔值
load ()

阻止collection,直到所有数据都可用。

公众
max (
String fieldName
)

查找字段的最大值。

公共 日期
String fieldName
)

查找最大日期。

公众
min (
String fieldName
)

查找字段的最小值。

公共 日期
String fieldName
)

查找最小日期。

public void
int oldPos,
int newPos
)

将对象从一个位置移动到另一个位置,同时保持列表大小固定。

公共布尔值
Object object
)

如果此Collection包含指定对象,则从中删除一个实例。

公用E
int location
)

从此列表中删除指定位置的对象。

公共布尔值

删除指定Collection中每个对象在此Collection中出现的所有情况。

public void

删除所有用户定义的变更侦听器。

public void
public void
公用E
set (
int location,
E object
)

将列表中指定位置的元素替换为指定对象。

公共整型
size ()

返回此List中的元素数量。

java.lang.String[] fieldNames,
io.realm.Sort[] sortOrders
)

根据提供的字段和排序顺序对collection进行排序。

String fieldName1,
Sort sortOrder1,
String fieldName2,
Sort sortOrder2
)

根据提供的字段和排序顺序对collection进行排序。

String fieldName,
Sort sortOrder
)

根据提供的字段和排序顺序对collection进行排序。

String fieldName
)

根据提供的字段以升序对collection进行排序。

公众
sum (
String fieldName
)

计算给定字段的总和。

公共string

返回一个 RealmQuery,可用于查询该类的特定对象。

  • 从类 java.lang.Object 继承的方法 :getClasshashCodeequalsclonetoStringnotifynotifyAllwaitwaitwaitfinalize

  • 从类 java.util.AbstractCollection 继承的方法 :iteratorsizeisEmptycontainstoArraytoArrayaddremovecontainsAlladdAllremoveAllretainAllclear ,toString

  • 从类 java.util.AbstractList 继承的方法 :addgetsetaddremoveindexOflastIndexOfclearaddAlliteratorlistIteratorlistIteratorsubListequalshashCoderemoveRange

此列表所在的BaseRealm实例。

警告:此字段仅供内部使用,不应使用。

public RealmList ()

在非托管模式下创建 RealmList,其中的元素不受 Realm 控制。 这实际上使 RealmList 函数成为 java.util.ArrayList 并且无法查询处于此状态的对象。

使用io.realm.Realm.copyToRealm(Iterable, ImportFlag...)在 Realm 中正确保留其元素。

public RealmList (
E[] objects
)

在非托管模式下创建一个具有初始元素列表的 RealmList。 非托管模式下的 RealmList 充当 java.util.ArrayList 并且无法查询处于此状态的对象。

使用io.realm.Realm.copyToRealm(Iterable, ImportFlag...)在 Realm 中正确保留所有非托管元素。

参数

  • objects - 列表中的初始对象。

public boolean add (
E object
)

在此 List 的末尾添加指定对象。

  1. 非托管 RealmList :可以同时添加托管和非托管对象。 如果将托管对象添加到非托管 RealmList,之后使用Realm.copyToRealm(RealmModel, ImportFlag...),则它们不会再次复制到 Realm。

  2. 托管 RealmList :可以将非托管对象添加到已托管的 RealmList 中。 在这种情况下,如果对象具有主键,则使用Realm.copyToRealm(RealmModel, ImportFlag...)Realm.copyToRealmOrUpdate(RealmModel, ImportFlag...)以透明方式将对象复制到 Realm。

参数

  • object - 要添加的对象。

返回:

始终true

抛出异常

覆盖

add AbstractList 类中

public void add (
int location,
E element
)

将指定对象插入此 List 的指定位置。 该对象会插入到指定位置的任何前一个元素之前。 如果该位置等于此 List 的大小,则将该对象添加到末尾。

  1. 非托管 RealmList :可以同时添加托管和非托管对象。 如果将托管对象添加到非托管 RealmList,之后使用Realm.copyToRealm(RealmModel, ImportFlag...),则它们不会再次复制到 Realm。

  2. 托管 RealmList :可以将非托管对象添加到已托管的 RealmList 中。 在这种情况下,如果对象具有主键,则使用Realm.copyToRealm(RealmModel, ImportFlag...)Realm.copyToRealmOrUpdate(RealmModel, ImportFlag...)以透明方式将对象复制到 Realm。

参数

  • location - 要插入的索引。

  • element - 要添加的元素。

抛出异常

覆盖

add AbstractList 类中

向此RealmList添加变更侦听器。

注册变更侦听器不会阻止底层 RealmList 被垃圾收集。 如果对 RealmList 进行垃圾回收,则将停止触发变更侦听器。 为避免这种情况,请尽可能长时间地保留强引用,例如在类变量中。

public class MyActivity extends Activity {
private RealmList<Dog> dogs; // Strong reference to keep listeners alive
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dogs = realm.where(Person.class).findFirst().getDogs();
dogs.addChangeListener(new RealmChangeListener<RealmList<Dog>>() {
@Override
public void onChange(RealmList<Dog> dogs) {
// React to change
}
});
}
}

参数

  • listener - 要通知的变更侦听器。

抛出异常

向此RealmList添加变更侦听器。

注册变更侦听器不会阻止底层 RealmList 被垃圾收集。 如果对 RealmList 进行垃圾回收,则将停止触发变更侦听器。 为避免这种情况,请尽可能长时间地保留强引用,例如在类变量中。

public class MyActivity extends Activity {
private RealmList<Dog> dogs; // Strong reference to keep listeners alive
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dogs = realm.where(Person.class).findFirst().getDogs();
dogs.addChangeListener(new OrderedRealmCollectionChangeListener<RealmList<Dog>>() {
@Override
public void onChange(RealmList<Dog> dogs, OrderedCollectionChangeSet changeSet) {
// React to change
}
});
}
}

参数

  • listener - 要通知的变更侦听器。

抛出异常

public <any> asChangesetObservable ()

返回一个 Rx Observable,用于监控对此 RealmList 的更改。 订阅时,它将发出当前的 RealmList。 每次更新 RealmList 时,都会发送由 RealmList 和OrderedCollectionChangeSet组成的对。 首次发出 RealmList 时,变更集将为null

RealmList 将在 RealmList 更新时不断发出 - onComplete将永远不会被调用。

从 Realm Observables 发出的项目被冻结(请参阅冻结() 。 这意味着它们是不可变的,可以在任何线程上读取。

Realm Observables 始终从持有活动 Realm 的线程中发出项目。 这意味着,如果需要进行进一步处理,建议观察计算调度器上的值:

list.asChangesetObservable()
.observeOn(Schedulers.computation())
.map((rxList, changes) -> doExpensiveWork(rxList, changes))
.observeOn(AndroidSchedulers.mainThread())
.subscribe( ... );

返回:

仅调用onNext的 RxJava Observable。 它永远不会调用onCompleteOnError

抛出异常

提示

另请参阅:

public <any> asFlowable ()

返回一个监控此 RealmList 更改的 Rx Flowable。 订阅时,它将发出当前的 RealmList。 RealmList 将在 RealmList 更新时不断发出 - onComplete将永远不会被调用。

从 Realm Flowables 发出的项被冻结(请参阅冻结() 。 这意味着它们是不可变的,可以在任何线程上读取。

Realm Flowables 始终从持有活动 RealmList 的线程中发出项目。 这意味着,如果需要进行进一步处理,建议观察计算调度器上的值:

list.asFlowable()
.observeOn(Schedulers.computation())
.map(rxResults -> doExpensiveWork(rxResults))
.observeOn(AndroidSchedulers.mainThread())
.subscribe( ... );

如果希望asFlowable()停止发出项目,可以使用first()操作符指示 RxJava 仅发出第一项:

list.asFlowable()
.first()
.subscribe( ... ) // You only get the results once

返回:

仅调用onNext的 RxJava Observable。 它永远不会调用onCompleteOnError

抛出异常

提示

另请参阅:

public double average (
String fieldName
)

返回给定字段的平均值。

返回:

查询结果中对象之间给定字段的平均值。对于所有类型的数字字段,该值的类型都是 double。如果对象不存在,或者给定字段的值为null ,则返回0 。计算平均值时,具有null值的对象将被忽略。

public void clear ()

从此列表中删除所有元素,使其为空。 此方法不会从 Realm 中删除对象。

抛出异常

覆盖

clear AbstractList 类中

public boolean contains (
Object object
)

如果列表在附加到 Realm 时包含指定元素,则返回true 。 该方法将查询原生 Realm 底层storage engine,以快速找到指定的元素。

如果列表未附加到 Realm,则默认使用 List.contains(Object) 实施将发生。

参数

  • object - 要测试其在此列表中是否存在的元素。

返回:

true 如果此列表包含指定元素,否则为false

覆盖

contains AbstractCollection 类中

从此OrderedRealmCollection创建快照。

返回:

此collection的快照。

public boolean deleteAllFromRealm ()

这将从底层 Realm 以及集合中删除集合中的所有对象。

返回:

true 如果删除了对象,则返回false

public boolean deleteFirstFromRealm ()

从 Realm 中删除第一个对象。 这也会将其从该collection中删除。

返回:

true 如果删除了对象,则为false

public void deleteFromRealm (
int location
)
从 Realm 中删除给定索引处的对象。 这也会将其从collection中删除。
public boolean deleteLastFromRealm ()

从 Realm 中删除最后一个对象。 这也会将其从该collection中删除。

返回:

true 如果删除了对象,则为false

public E first (
E defaultValue
)

获取集合中的第一个对象。 如果collection为空,将使用提供的默认。

返回:

第一个对象或提供的默认值。

public E first ()

获取collection中的第一个对象。

返回:

第一个对象。

public RealmList freeze ()

public E get (
int location
)

返回此列表中指定位置的元素。

参数

  • location - 要返回的元素的索引。

返回:

指定索引处的元素。

抛出异常

覆盖

get AbstractList 类中

public Realm getRealm ()

返回此collection所属的Realm 实例

不鼓励在返回的实例上调用Realm.close() ,因为这与在原始 Realm 实例上调用它相同,这可能导致 Realm 完全关闭,从而使列表失效。

返回:

此集合所属的Realm实例,如果该集合为非托管集合,则为null

抛出异常

public boolean isFrozen ()

public boolean isLoaded ()

检查collection是否已完成数据加载。

返回:

true 如果数据已加载且可用,则如果仍在加载数据,则为false

public boolean isManaged ()

检查collection是否由Realm托管。一个托管的collection只是底层的Realm 文件中数据的包装器。在 Looper 线程上,托管 collection 将实时更新,因此它始终点向最新数据。托管集合具有线程限制,因此除了创建它们的线程之外,无法从其他线程访问托管集合。如果此方法返回false ,则该集合为非托管集合。 非托管集合只是普通的 Java 集合,因此不会实时更新。

返回:

true 如果这是一个托管RealmCollection ,则为false

public boolean isValid ()

检查集合是否仍可有效使用,即io.realm.Realm实例尚未关闭。 对于非托管collection,它将始终返回true

返回:

true 如果仍可使用,则为非托管collection,否则为false

public Iterator iterator ()

覆盖

iterator AbstractList 类中

public E last (
E defaultValue
)

从collection中获取最后一个对象。如果collection为空,将使用提供的默认。

返回:

最后一个对象或提供的默认值。

public E last ()

从collection中获取最后一个对象。

返回:

最后一个对象。

int location
)

覆盖

listIterator AbstractList 类中

覆盖

listIterator AbstractList 类中

public boolean load ()

阻止collection,直到所有数据都可用。

返回:

true 如果可以成功加载数据,则为false

public Number max (
String fieldName
)

查找字段的最大值。

返回:

如果对象不存在,或者给定字段的值为null ,则返回null 。否则返回最大值。 确定最大值时,具有null值的对象将被忽略。

public Date maxDate (
String fieldName
)

查找最大日期。

返回:

如果对象不存在,或者给定日期字段的值为null ,则返回null 。否则,返回最大日期。 确定最大日期时,具有null值的对象将被忽略。

public Number min (
String fieldName
)

查找字段的最小值。

返回:

如果对象不存在,或者给定字段的值为null ,则返回null 。否则返回最小值。 确定最小值时,具有null值的对象将被忽略。

public Date minDate (
String fieldName
)

查找最小日期。

返回:

如果对象不存在,或者给定日期字段的值为null ,则返回null 。 否则,返回最小日期。 确定最小日期时,具有null值的对象将被忽略。

public void move (
int oldPos,
int newPos
)

将对象从一个位置移动到另一个位置,同时保持列表大小固定。 RealmObject 将进行移动,因此不会引入null值。

参数

  • oldPos — 要移动的 RealmObject 的索引。

  • newPos - 目标位置。 如果 newPos < oldPos,则该位置的对象将向右移动。 如果 oldPos < newPos,indexes > oldPos 将向左移动一次。

抛出异常

public boolean remove (
Object object
)

如果此Collection包含指定对象,则从中删除一个实例。 此实现会遍历此Collection并测试迭代器返回的每个元素e ,确定e是否等于给定对象。 如果为object != null ,则使用object.equals(e)执行此测试,否则使用object == null执行。 如果找到等于给定对象的元素,则对迭代器调用remove方法并返回true ,否则返回false 。 如果迭代器不支持删除元素,则会引发UnsupportedOperationException

参数

  • object - 要删除的对象。

返回:

true 如果此Collection已修改,则否则为false

抛出异常

覆盖

remove AbstractCollection 类中

public E remove (
int location
)

从此列表中删除指定位置的对象。

参数

  • location - 要删除的对象的索引。

返回:

删除的对象。

抛出异常

覆盖

remove AbstractList 类中

public boolean removeAll (
)

删除指定Collection中每个对象在此Collection中出现的所有情况。 在此方法返回后,在此Collection中找不到所传递的Collection中的任何元素。

此实现遍历Collection并测试迭代器返回的每个元素e ,看看它是否包含在指定的Collection中。 如果此测试是肯定的,则在迭代器上调用remove方法。

参数

  • collection - 要删除的collection的对象。

返回:

true 如果此Collection已修改,则否则为false

抛出异常

覆盖

removeAll AbstractCollection 类中

删除所有用户定义的变更侦听器。

抛出异常

提示

另请参阅:

删除指定的变更侦听器。

参数

  • listener - 要删除的变更侦听器。

抛出异常

提示

另请参阅:

删除指定的变更侦听器。

参数

  • listener - 要删除的变更侦听器。

抛出异常

提示

另请参阅:

public E set (
int location,
E object
)

将列表中指定位置的元素替换为指定对象。

  1. 非托管 RealmList :可以同时添加托管和非托管对象。 如果将托管对象添加到非托管 RealmList,之后使用Realm.copyToRealm(RealmModel, ImportFlag...),则它们不会再次复制到 Realm。

  2. 托管 RealmList :可以将非托管对象添加到已托管的 RealmList 中。 在这种情况下,如果对象具有主键,则使用Realm.copyToRealm(RealmModel, ImportFlag...)Realm.copyToRealmOrUpdate(RealmModel, ImportFlag...)以透明方式将对象复制到 Realm。

参数

  • location — 放置指定对象的索引。

  • object - 要添加的对象。

返回:

索引处的前一个元素。

抛出异常

覆盖

set AbstractList 类中

public int size ()

返回此List中的元素数量。

返回:

List中的元素数量。

抛出异常

覆盖

size AbstractCollection 类中

java.lang.String[] fieldNames,
io.realm.Sort[] sortOrders
)

根据提供的字段和排序顺序对collection进行排序。

返回:

将创建并返回新的排序RealmResults 。 原始collection保持不变。

String fieldName1,
Sort sortOrder1,
String fieldName2,
Sort sortOrder2
)

根据提供的字段和排序顺序对collection进行排序。

返回:

将创建并返回新的排序RealmResults 。 原始collection保持不变。

String fieldName,
Sort sortOrder
)

根据提供的字段和排序顺序对collection进行排序。

返回:

将创建并返回新的排序RealmResults 。 原始collection保持不变。

String fieldName
)

根据提供的字段以升序对collection进行排序。

返回:

将创建并返回新的排序RealmResults 。 原始collection保持不变。

public Number sum (
String fieldName
)

计算给定字段的总和。

返回:

总和。 如果对象不存在,或者给定字段的值为null ,则返回0 。计算总和时,具有null值的对象将被忽略。

public String toString ()

覆盖

toString AbstractCollection 类中

public RealmQuery where ()

返回一个 RealmQuery,可用于查询该类的特定对象。

返回:

RealmQuery 对象。

抛出异常

提示

另请参阅:

后退

RealmFieldType