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.