Android通訊錄分頁查詢

最近,寫一個通訊錄項目要用到查詢後分頁顯示,於是各種百度,(我是菜鳥,表笑)當然方法很多,我
只是分享一下我覺得簡單的一種。
很多人都說先把滿足條件的都查出來,存到集合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();
                }
                }
            }
        });
    }

希望有幫助!!!

發佈了30 篇原創文章 · 獲贊 19 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章