SoFunction
Updated on 2025-04-11

Android implements simple batch loading of ListView

Each time you slide to the bottom, get 10 pieces of data from the database and load it in ListView

database

package ; 
 
import ; 
import ; 
import ; 
import ; 
 
public class PersonDb extends SQLiteOpenHelper { 
 
  public PersonDb(Context context) { 
    super(context, "creature", null, 1); 
    // TODO Auto-generated constructor stub 
  } 
 
  @Override 
  public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    ("create table people(_id integer primary key autoincrement,name char,number char)"); 
  } 
 
  @Override 
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 
    ("drop table people"); 
    onCreate(db); 
  } 
 
} 

The business encapsulation of the database, where the core code is obtained

package ; 
 
/**
  * Database business encapsulation class
  */ 
 
import ; 
import ; 
 
import ; 
import ; 
import ; 
import ; 
 
public class PersonList { 
   
  PersonDb personDb; 
   
  public PersonList(Context context){ 
     = new PersonDb(context); 
  } 
   
  /**
    * Get data for certain entries
    * @param startIndex
    * The location where the data is started
    * @param num
    * How many pieces of data to get
    */ 
  public List<Person> getMoreDatas(int startIndex,int num){ 
     
    List<Person> list = new ArrayList<Person>(); 
    SQLiteDatabase db = (); 
    Cursor cursor = ("select name,number from people order by _id desc limit ?,?", 
        new String[]{startIndex + "",num + ""}); 
     
    while(()){ 
      Person person = new Person(); 
      ((("name"))); 
      ((("number"))); 
      (person); 
    } 
     
    (); 
    (); 
     
     
    return list; 
     
  } 
   
  /**
    * Add database entry
    * @param name
    * @param number
    */ 
  public void add(String name,String number){ 
     
    SQLiteDatabase db = (); 
     
    ContentValues cv = new ContentValues(); 
    ("name", name); 
    ("number", number); 
     
    ("people", null, cv); 
    (); 
  } 
   
} 

Functional implementation

package ; 
 
import ; 
import ; 
 
import ; 
import ; 
import ; 
import ; 
import ; 
import ; 
import ; 
import ; 
import ; 
import ; 
import ; 
import ; 
 
public class MainActivity extends Activity { 
   
  private ListView lv ; 
  private List<Person> datas = new ArrayList<Person>(); 
  private static int PERPAGE = 10; //Loading per page  private static final int FINISH = 0;//The data loading is completed  private List<Person> moreDatas;//The data loaded each time  private MyAdapter adapter; 
  private PersonList personList ; 
   
  //If there is a lot of data and it takes a long time, and when the data is loaded, send FINISH to handler and notify ListView to update the data.  private Handler handler = new Handler(){ 
    public void handleMessage( msg) { 
       
      switch () { 
      case FINISH: 
        if (() != 0) { 
          (()); 
          (); 
        }else { 
          (, "No more data", Toast.LENGTH_SHORT).show(); 
        } 
        break; 
 
      default: 
        break; 
      } 
       
       
    }; 
  }; 
   
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    (savedInstanceState); 
    setContentView(.activity_main); 
    initView(); 
    initData(); 
    initEvent(); 
  } 
  /**
    * Add scroll listening event to ListView, but when scrolling to the last row, more data is loaded
    */ 
  private void initEvent() { 
    (new OnScrollListener() { 
       
      @Override 
      public void onScrollStateChanged(AbsListView view, int scrollState) { 
        // TODO Auto-generated method stub 
        if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) { 
          int lastVisiblePosition = (); 
          if (lastVisiblePosition == () - 1) { 
            initData(); 
            ("Load more data"); 
          } 
        } 
      } 
       
      @Override 
      public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
        // TODO Auto-generated method stub 
         
      } 
    }); 
  } 
 
  private void initView() { 
     
    setContentView(.activity_main); 
     
    lv = (ListView) findViewById(); 
    personList = new PersonList(getApplicationContext()); 
    adapter = new MyAdapter(); 
    (adapter); 
  } 
   
  /**
    * Load data in child thread to avoid blocking of main thread
    */ 
  private void initData() { 
    new Thread() { 
 
      public void run() { 
 
        // Load more data        moreDatas = ((), PERPAGE); 
 
        (moreDatas);// Add all the data in a container        // The data fetch is completed, and the message is sent to notify the data fetch is completed        (FINISH).sendToTarget(); 
 
      }; 
    }.start(); 
  } 
   
  private class ItemView{ 
    private TextView tv_name; 
    private TextView tv_num; 
  } 
   
  /**
    * ListView adapter
    * @author lian
    *
    */ 
  private class MyAdapter extends BaseAdapter{ 
 
    @Override 
    public int getCount() { 
      // TODO Auto-generated method stub 
      return (); 
    } 
 
    @Override 
    public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return null; 
    } 
 
    @Override 
    public long getItemId(int position) { 
      // TODO Auto-generated method stub 
      return 0; 
    } 
 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
       
      ItemView itemView = null; 
      if (convertView == null) { 
        itemView = new ItemView(); 
        convertView = (getApplicationContext(), .item_lv, null); 
        itemView.tv_name = (TextView) (.tv_name); 
        itemView.tv_num = (TextView) (.tv_num); 
        (itemView); 
      }else { 
        itemView = (ItemView) (); 
      } 
       
      Person person = (position); 
      itemView.tv_name.setText(()); 
      itemView.tv_num.setText(()); 
       
      return convertView; 
    } 
     
  } 
   
} 

Other Person's JavaBeans and layout files will not be described in detail

The above is all about this article, I hope it will be helpful to everyone's learning.