我有一个带有自定义适配器的ListFragment,它应该从RealmBaseAdapter扩展,实现ListAdapter以便在任何更改时刷新视图。我从Realm查询用户,并让他/她的朋友返回RealmList
RealmList<User> users =realm.where(User.class).equalTo("id",userid).findFirst().getFriends()
此查询返回一个RealmList,因为我将其存储在User类中:
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,我是对的吗?
答案 0 :(得分:0)
你可以走三条路:
创建您自己的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();