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

希望有帮助!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值