Android 带有 Listfragment 的 RealmBaseAdapter
Android RealmBaseAdapter with Listfragment
我有一个带有自定义适配器的 ListFragment,它应该从 RealmBaseAdapter 扩展,实现 ListAdapter,以便在任何更改时刷新视图。我从 Realm 查询一个用户,得到 his/her 个朋友,其中 return 是一个 RealmList
RealmList<User> users =realm.where(User.class).equalTo("id",userid).findFirst().getFriends()
此查询 return 一个 RealmList,因为我以这种方式将它存储在我的用户 class 中:
public class User extends RealmObject implements Serializable {
@PrimaryKey
private long id;
private RealmList<User> friends = new RealmList<>();
所以我不能这样做,因为 RealmBaseAdapter 需要一个 realmResult:
MySportmateListAdapter adapter = new MySportmateListAdapter(getContext(), users);
你能帮帮我吗,这个有什么解决办法吗?
在用户中我认为不可能将 RealmList 更改为 RealmResults,对吗?
你可以走三条路:
创建自己的 ArrayAdapter 并将 OnChangeListener 添加到 Realm 实例,并在每次更改时调用 notifyDataSetChange()
。
如果每个用户在 RealmList 好友中包含其所有好友,那么您可以使用此查询:realm.where(User.class).equalTo("friends.id", userId).findAll()
。它将在他们的好友 RealmList 中找到所有具有 id userId 用户的用户。
通过组合所有好友id创建查询获取好友列表:
RealmList<User> friends = realm.where(User.class).equalTo("id", userid).findFirst().getFriends()
RealmQuery<User> query = realm.where(User.class);
for(User friend : friends) {
query = query.or().equalTo("friends.id", friend.getId());
}
RealmResults<User> results = query.findAll();
我有一个带有自定义适配器的 ListFragment,它应该从 RealmBaseAdapter 扩展,实现 ListAdapter,以便在任何更改时刷新视图。我从 Realm 查询一个用户,得到 his/her 个朋友,其中 return 是一个 RealmList
RealmList<User> users =realm.where(User.class).equalTo("id",userid).findFirst().getFriends()
此查询 return 一个 RealmList,因为我以这种方式将它存储在我的用户 class 中:
public class User extends RealmObject implements Serializable {
@PrimaryKey
private long id;
private RealmList<User> friends = new RealmList<>();
所以我不能这样做,因为 RealmBaseAdapter 需要一个 realmResult:
MySportmateListAdapter adapter = new MySportmateListAdapter(getContext(), users);
你能帮帮我吗,这个有什么解决办法吗? 在用户中我认为不可能将 RealmList 更改为 RealmResults,对吗?
你可以走三条路:
创建自己的 ArrayAdapter 并将 OnChangeListener 添加到 Realm 实例,并在每次更改时调用
notifyDataSetChange()
。如果每个用户在 RealmList 好友中包含其所有好友,那么您可以使用此查询:
realm.where(User.class).equalTo("friends.id", userId).findAll()
。它将在他们的好友 RealmList 中找到所有具有 id userId 用户的用户。通过组合所有好友id创建查询获取好友列表:
RealmList<User> friends = realm.where(User.class).equalTo("id", userid).findFirst().getFriends() RealmQuery<User> query = realm.where(User.class); for(User friend : friends) { query = query.or().equalTo("friends.id", friend.getId()); } RealmResults<User> results = query.findAll();