首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android NSFetchedResultsController

Android NSFetchedResultsController
EN

Stack Overflow用户
提问于 2014-07-01 17:27:19
回答 1查看 781关注 0票数 3

我有一个iPhone和一个安卓应用程序。在iPhone上,我使用NSFetchedResultsController来管理我的UITableView的数据,目前我有很多数据(几千行)。

在我的安卓应用程序中,我使用ORMLite并将数据存储在一个表中,但是当我获取数据时,我会将所有数据提取到一个数组中,并使用ArrayAdapters。是否有更有效的方法来做到这一点,如NSFetchedResultsController类型的对象?出于性能原因,我只想加载所需的对象,而不是所有对象。

ORMLite中有办法做到这一点吗?我试着在文件里找到但到目前为止什么都没找到..。还有什么能帮上忙的吗?

EN

回答 1

Stack Overflow用户

发布于 2014-07-01 17:50:21

你可以用CursorAdapter.

http://developer.android.com/reference/android/widget/CursorAdapter.htmlhttp://www.mysamplecode.com/2012/07/android-listview-cursoradapter-sqlite.html

或者您可以实现一个无休止的适配器。

延迟加载可能会在这里有所帮助。让我们假设您有10000个条目的数据。您可以显示其中的一个有限子集,比如在一个time.You上的90个条目,最初可以加载几个条目,比如30(1-30)。在滚动到末尾时,当加载的entries.As条目达到90 (在第三次加载时),您可以将当前数据集截断为31-120,而不是前面的1-90。

另外一种情况也是一样的,那就是向上滚动。

代码语言:javascript
复制
int offset=0;
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
     final int MAX_SUBSET=90;
     final int INTERVAL=30;
        @Override
        public void onScrollStateChanged(AbsListView absListView, int i) {

        }

        @Override
        public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            final int lastItem = firstVisibleItem + visibleItemCount;

            if(lastItem == totalItemCount) {
                //Load new data and update The adapter.
                  if(totalItemCount<=MAX_SUBSET){
                      loadData(0,totalItemCount+INTERVAL);
                  }
                  else{
                   offset+=INTERVAL;
                  loadData(offset,MAX_SUBSET);

                   }
            }
            else if(0==firstVisibleItem){
              //Load old data
                if(totalItemCount<=MAX_SUBSET){
                      loadData(0,totalItemCount+INTERVAL);
                  }
                  else{
                   offset-=INTERVAL;
                       loadData(offset,MAX_SUBSET);

                   }
            }
    });

Ps:我错过了几次边界检查,但希望你能有个大致的想法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24516100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档