Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6166165
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T22:17:31+00:00 2026-05-23T22:17:31+00:00

I have DB table with ~15,000 rows which I want to display in the

  • 0

I have DB table with ~15,000 rows which I want to display in the listview. I want to display first 100 and when the user scrolls down to the last item the next 100 should be loaded (an so on…). I have implemented on OnScrollListener() which calls AsyncTask responsible for loading more items. The problem I’ve got is that my SimpleCursorAdapter is not updated after more rows are added to the cursor. I have tried adapter.notifyDataSetChanged(); but that doesn’t do anything.

This is the list listener:

    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) {}
    });

This is my AsyncTask class:

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;
    }
}

New rows are added to resultCursor but the list is not updated, what am I missing?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T22:17:32+00:00Added an answer on May 23, 2026 at 10:17 pm

    I will post a code which I have used to populated 10 records each on scroll event.

      /**
         * Called when the activity is first created.
         * 
         * @param savedInstanceState
         *            the saved instance state
         */
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 setContentView(R.layout.view_checkin_checkout_history);
    
                 Thread thread = new Thread() {
    
                public void run() {
    
                           synchronized (this) {
                        fetchHistory(0);
    
                        handler.post(new Runnable() {
                            public void run() {
                                pd.dismiss();
    
                                displayUI();
                            };
                        });
                    }
                }
            };
    
            thread.start();
             }
    
           /**
         * Display the check in check out history list.
         */
        private void displayUI() {
            if ((checkInCheckOutHistoryList != null)
                    && (checkInCheckOutHistoryList.size() > 0)) {
                historyArrayList = new ArrayList<HashMap<String, String>>();
    
                histroyListAdapter = new SimpleAdapter(
                        ViewCheckInCheckOutHistory.this, historyArrayList,
                        R.layout.multi_colummn_list_text_style_small, new String[] {
                                "assetTag", "gif" , "action", "actionTime"},
                        new int[] { R.id.list_content_column1,
                                R.id.list_content_imagecolumn,
                                R.id.list_content_column3,
                                R.id.list_content_column4});
    
                // To add more items to list view on scroll event.
                historyListView.setOnScrollListener(new OnScrollListener() {
    
                    @Override
                    public void onScrollStateChanged(AbsListView view,
                            int scrollState) {
                    }
    
                    @Override
                    public void onScroll(AbsListView view, int firstVisibleItem,
                            int visibleItemCount, int totalItemCount) {
    
                        int lastInScreen = firstVisibleItem + visibleItemCount;
    
                        if ((lastInScreen == totalItemCount) && !(loadingMore) && (lastInScreen < totalHistoryItemCount)) {
    
                            if (!firstInstance) {
                                openSlider();                           
                            }                           
    
                            fetchHistory(lastInScreen);     
    
                            Thread thread = new Thread(null, loadMoreListItems);
                            thread.start();
                        }
                    }
                });
                         }
                      }
    
    // Runnable to load the items
    
        private Runnable loadMoreListItems = new Runnable() {
    
            @Override
            synchronized public void run() {
                // Set flag so we cant load new items 2 at the same time
                loadingMore = true;
    
                HashMap<String, String> historyObjectMap;
    
                for (CheckInCheckOutHistory checkOutHistoryObj : checkInCheckOutHistoryList) {
                    historyObjectMap = new HashMap<String, String>();
                    historyObjectMap.put("assetTag",
                            checkOutHistoryObj.getAssetTag());
                    historyObjectMap.put("action", checkOutHistoryObj.getAction());
                    historyObjectMap.put("actionTime",
                            checkOutHistoryObj.getActionDate());
    
                    if (checkOutHistoryObj.getAction().equals("Checked out")) {
                        historyObjectMap.put("gif", R.drawable.radio_button_yellow
                                + "");
                    } else {
                        historyObjectMap.put("gif", R.drawable.radio_button_green
                                + "");
                    }
    
                    historyArrayList.add(historyObjectMap);
                }
    
                runOnUiThread(returnRes);
            }
        };
    
        // Since we cant update our UI from a thread this Runnable takes care of
        // that!
        private Runnable returnRes = new Runnable() {
            @Override
            public void run() {
    
                // Add the new items to the adapter
                if (historyArrayList != null && historyArrayList.size() > 0) {
                    histroyListAdapter.notifyDataSetChanged();
                }
    
                if (firstInstance) {
                    historyListView.setAdapter(histroyListAdapter);
                    firstInstance = false;
                }
    
                historyListLayout.setVisibility(View.VISIBLE);
    
                // Done loading more.
                loadingMore = false;
    
                if ((slidingDrawer.isOpened()) && (!loadingMore)) {
    
                    handler.postDelayed(new Runnable() {
    
                        @Override
                        public void run() {
                            slidingDrawer.close();
                            slidingDrawer.setVisibility(View.GONE);
                        }
                    }, 1000);
    
                }
            }
        };
    

    fetchHistory(int count) is the method I have used to set the values for totalHistoryItemCount & checkInCheckOutHistoryList.

    Hope this would help.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a table with about 5,000 rows which I build dynamically with jQyuery.
I have a table (session) in a database which has almost 72,000 rows. I
I have a table with 116,000 rows and I want to retrieve all of
I have a database table with 10,000,000+ rows which I process to create a
I have a huge table, which has 3 columns and about 333,000 rows. The
I have a database with over 30,000 tables and ~40-100 rows in each table.
I have table with around 70 000 rows. There is 6000 rows that i
This is staight forward I believe: I have a table with 30,000 rows. When
Suppose table 1 Have 1,000,000 rows. In table 2 there are 50,000 rows INPUT
I have a MySQL table with about 5,000,000 rows that are being constantly updated

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.