我希望从我的android项目中的领域数据库中获取20条记录,然后获取接下来的20条记录并在每一步中获取其他记录,直到从领域中获取所有记录。
这是我的领域数据库函数,用于获取许多特殊记录
public ArrayList<Post> loadLikedPost() {
ArrayList<Post> posts_database = new ArrayList<Post>();
realm.beginTransaction();
ListIterator<PostDatabase> posts;
posts = realm.where(PostDatabase.class).equalTo("is_like", true).findAll().sort("post_id", Sort.DESCENDING).listIterator();
int size = realm.where(PostDatabase.class).equalTo("is_like", true).findAll().size();
realm.commitTransaction();
int i = 0;
while(posts.hasNext() && i < 20) {
PostDatabase pd = posts.next();
Post p = new Post();
p.text = pd.getText();
p.img = pd.getImg();
p.post_id = pd.getPost_id();
p.width = pd.getWidth();
p.height = pd.getHeight();
p.date = pd.getDate();
p.is_visible = pd.getIs_visible();
p.likes = pd.getLikes();
p.is_like = pd.getIs_like();
p.entity = new ArrayList<Entity>();
for(EntityDatabase ed : pd.getEntity()) {
Entity e = new Entity();
e.length = ed.getLenght();
e.offset = ed.getOffset();
e.type = ed.getType();
p.entity.add(e);
}
p.setSpan();
p.setImg(context);
posts_database.add(p);
i++;
}
Collections.reverse(posts_database);
return posts_database;
}
这是我加载那些从上一个函数
获得的记录的函数public void loadPost() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
callDatabase = new CallDatabase(context);
callDatabase = new CallDatabase(context);
callListener.onGetLikedPosts(PostController.getVisiblePosts(callDatabase.loadLikedPost(i), true));
}
});
thread.start();
}
现在我只能获取前20条记录,我该怎么办? 提前谢谢。
答案 0 :(得分:0)
从技术上讲,如果你没有忽略Realm的零拷贝功能,你甚至不需要提供分页或加载。
public RealmResults<Post> loadLikedPost() { //call on UI thread
return realm.where(Post.class)
.equalTo("is_like", true)
.findAllSortedAsync("post_id", Sort.DESCENDING);
}
然后你可以做
public class PostAdapter extends RealmRecyclerViewAdapter<Post, PostViewHolder> {
public PostAdapter(Context context, RealmResults<Post> results) {
super(context, results, true);
}
// onCreateViewHolder
// onBindViewHolder
//getItem(position)
}