在android领域加载页面

时间:2016-08-07 07:28:46

标签: android realm

我希望从我的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条记录,我该怎么办? 提前谢谢。

1 个答案:

答案 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)
}