0

我有一个从 SQLite 数据库填充的 ListView。数据库有 300,000 多行,列表视图是在从不同的事物(例如,姓名、姓氏、年龄和其他一般数据库内容)中搜索后填充的。

它适用于小型搜索返回,但如果搜索返回超过 2,000 个结果,则应用程序会冻结并停止。

我想要做的是从数据库返回 100 个结果,然后当它滚动到列表的底部时,它会返回光标并加载另一个 100。我有一个动态列表工作,但它仍然冻结,因为它仍在搜索1000+ 个结果,只显示 100 个结果。这是一些伪代码(因为列表视图有 500 多行,根据搜索的内容,有大量的 if else 语句)

    public class example extends Activity implements OnScrollListener{
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.showlist);
        //It opens database here
        ListView list = (ListView) findViewById(R.id.listView1);
            if(nameOnly is searched){
                //adds data to list with array adapter here
                //return 100 results and put it in a list
            }else if(name and surname is searched){
                //adds data to list with array adapter here
                //return 100 results and put it in a list
            }else if (surname only searced){
                //adds data to list with array adapter here
                //return 100 results and put it in a list
            }
    }
    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, 
    int visibleItemCount,     int totalItemCount) {
    boolean load = firstVisibleItem+visibleItemCount>=totalItemCount;
    if(load){
        //This is where i want to set it to return 
    //the next 100 and add it to the list from the if else statements
    }       
}
@Override
public void onScrollStateChanged(AbsListView arg0, int arg1) {
}   
    }

所以我想尝试再次在 OnScroll 中移动光标并在 SQLite 光标中使用 OFFSET 但它不起作用。如果这是最好的方法,我现在不知道,所以任何想法都会受到赞赏!

4

1 回答 1

0

由于您有很多记录,因此您可以做出一些选择。您可以使用异步任务来加载记录或加载更多设施。

对于负载更多,您可以查看以下链接 列表与负载更多

您还可以查看异步任务 异步任务

于 2013-11-22T10:43:05.330 回答