Надеюсь, это поможет.

я есть таблица БД с ~ 15 000 строк, которые я хочу отобразить в виде списка. Я хочу отобразить первые 100, и когда пользователь прокручивает вниз до последнего элемента, следующие 100 должны быть загружены (так далее ...). Я реализовал OnScrollListener (), который вызывает AsyncTask, ответственный за загрузку большего количества элементов. У меня проблема в том, что мой SimpleCursorAdapter не обновляется после добавления новых строк в курсор. Я пробовал adapter.notifyDataSetChanged (); но это ничего не делает.

Это список слушателей:

    myListView.setOnScrollListener(new OnScrollListener(){
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            int lastInScreen = firstVisibleItem + visibleItemCount;
            if(resultCursor != null){
                if(lastInScreen == totalItemCount && isLoadingMore == false){
                    isLoadingMore = true;
                    loadedPage ++;
                    new LoadBooks().execute();
                }
            }
        }
        public void onScrollStateChanged(AbsListView view, int scrollState) {}
    });


Это мой класс AsyncTask:

private class LoadBooks extends AsyncTask<String, Void, Void> {
    private final ProgressDialog dialog = new ProgressDialog(FullIndex.this);

    @Override
    protected void onPreExecute() {
       this.dialog.setMessage("Loading books...");
       this.dialog.show();
    }

    @Override
    protected Void doInBackground(String... arg0) {
        try{
            resultCursor = dbHelper.fetchBooks(0, loadedPage * LIMIT_RESULTS);
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }
    @Override
    protected void onPostExecute(final Void unused){
        if(resultCursor != null){
            if(adapter == null){
                startManagingCursor(resultCursor);
                String[] from = new String[]{"name"};
                int[] to = new int[]{R.id.book_item_tbx};
                getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
                adapter = new SimpleCursorAdapter(FullIndex.this, R.layout.book_item, resultCursor, from, to);
                setListAdapter(adp);
            }else{
                adapter.notifyDataSetChanged();
            }
        }
        if(dialog != null && dialog.isShowing()){
            dialog.dismiss();
        }
        isLoadingMore = false;
    }
}


Новые строки добавляются в resultCursor, но список не обновляется, что мне не хватает?

Ответы на вопрос(1)

Ваш ответ на вопрос