最近,寫一個通訊錄項目要用到查詢後分頁顯示,於是各種百度,(我是菜鳥,表笑)當然方法很多,我
只是分享一下我覺得簡單的一種。
很多人都說先把滿足條件的都查出來,存到集合ArrayList all中去,如果查到allRecorders項,而每一頁最多顯示lineSize行,於是計算出你需要顯示多少頁,舉例說明吧,例如你查到了13行數據,而你每一頁顯示六行,那麼你就3頁數據要顯示pagesize=3(這個可以用進一法算出),用一個int變量currentpage記錄當前顯示頁數,第一頁爲1,一次類推,每按下一頁按鈕的時候如果currentpage小於3且下一頁不是最後一頁,則從查出來的數據集合all中挑(currentpage-1)*lineSize項到(currentpage-1)*lineSize+6項存到ArrayList onepage中去並顯示在ListView中,如果是下一頁最後一頁計算出最後一頁有多少行數據,同樣添加到onepage中去即可(最後一頁的數據一定小於等於6,不然怎麼會是最後一行呢)當然上一頁道理是一樣的,不論是查詢上一頁還是下一頁的數據如果有數據顯示的話,一定要記得要先清空onepage中的數據,不然如果你直接往這個裏面添加的話一定會大於6行數據的。
貼圖:
private int currentPage = 1; //默認在第一頁
private static final int lineSize = 6; //每次顯示數
private int allRecorders = 0; //全部記錄數
private int pageSize = 1; //默認共一頁
private int pagefirst=0;//顯示頁第一行下標
last=(Button) findViewById(R.id.last);//上一頁
last.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(currentPage!=1){
pagefirst-=lineSize;
currentPage--;
myList.clear();
for(int i=0;i<lineSize;i++){
Contact contact=(Contact) contacts.get(pagefirst+i);
HashMap map=new HashMap();
map.put("tv_name", contact.getName());
map.put("tv_mobilephone", contact.getPhone());
map.put("tv_image",contact.getGender().equals("男")?R.drawable.male:R.drawable.female);
myList.add(map);
//Toast.makeText(MainActivity.this, contact.getName(), Toast.LENGTH_SHORT).show();
}
adapter =new SimpleAdapter(MainActivity.this,myList,
R.layout.item_contact,new String[]{"tv_name","tv_mobilephone","tv_image"},
new int[]{R.id.tv_name,R.id.tv_mobilephone,R.id.tv_image});
contactList.setAdapter(adapter);
}
}
});
next=(Button) findViewById(R.id.next);//下一頁
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(currentPage<pageSize){
pagefirst+=lineSize;
currentPage++;
if(currentPage==pageSize){
myList.clear();
int beforesize=lineSize*(currentPage-1);
for(int i=0;i<allRecorders-beforesize;i++){
Contact contact=(Contact) contacts.get(pagefirst+i);
HashMap map=new HashMap();
map.put("tv_name", contact.getName());
map.put("tv_mobilephone", contact.getPhone());
map.put("tv_image",contact.getGender().equals("男")?R.drawable.male:R.drawable.female);
myList.add(map);
//Toast.makeText(MainActivity.this, contact.getName(), Toast.LENGTH_SHORT).show();
}
adapter =new SimpleAdapter(MainActivity.this,myList,
R.layout.item_contact,new String[]{"tv_name","tv_mobilephone","tv_image"},
new int[]{R.id.tv_name,R.id.tv_mobilephone,R.id.tv_image});
contactList.setAdapter(adapter);
//Toast.makeText(MainActivity.this, "next"+pagefirst, 1).show();
}else{
myList.clear();
for(int i=0;i<lineSize;i++){
Contact contact=(Contact) contacts.get(pagefirst+i);
HashMap map=new HashMap();
map.put("tv_name", contact.getName());
map.put("tv_mobilephone", contact.getPhone());
map.put("tv_image",contact.getGender().equals("男")?R.drawable.male:R.drawable.female);
myList.add(map);
// Toast.makeText(MainActivity.this, contact.getName(), Toast.LENGTH_SHORT).show();
}
adapter =new SimpleAdapter(MainActivity.this,myList,
R.layout.item_contact,new String[]{"tv_name","tv_mobilephone","tv_image"},
new int[]{R.id.tv_name,R.id.tv_mobilephone,R.id.tv_image});
contactList.setAdapter(adapter);
//Toast.makeText(MainActivity.this, "next"+pagefirst, 1).show();
}
}
}
});
}
希望有幫助!!!