我有一个从 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 但它不起作用。如果这是最好的方法,我现在不知道,所以任何想法都会受到赞赏!