У меня есть ListView, который заполняется из базы данных SQLite. База данных состоит из 300 000+ строк, и список заполняется после поиска по разным данным (например, имя, фамилия, возраст и другие общие данные базы данных).
Он отлично работает для небольших результатов поиска, но если поиск возвращает более 2000 результатов, приложение зависает и останавливается.
Я хочу вернуть 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 и использовать OFFSET в курсоре SQLite, но это не сработало. Я не знаю сейчас, если это лучший способ сделать это, поэтому любые идеи приветствуются!
loading..
в пользовательском интерфейсе, например, googleusercontent.com/_ODdyLCCXPpQ/TZwr-_i8BHI/AAAAAAAAw08/AsyncTask
поможет. - person Amulya Khare   schedule 22.11.2013