ListView 实现上一页下一页功能

来源:互联网 发布:淘宝买东西安装工人 编辑:程序博客网 时间:2024/04/29 11:27

代码

Activity/Fragment中

//定义当前的页码 默认第0页public static int PAGE_NOW = 0;//设置每一页的item个数 可以随意设置public static int ITEM_COUNT = 6;/** * *中间无关的代码省略... */ @Overridepublic void onClick(View v) {    switch (v.getId()) {        case R.id.nota_prepage:            prePage();            break;        case R.id.nota_nextpage:            nextPage();            break;    }}//下一页private void nextPage() {    PAGE_NOW++;    mAdapter.notifyDataSetChanged();    checkButton();}//上一页private void prePage() {    PAGE_NOW--;    mAdapter.notifyDataSetChanged();    checkButton();}//设置两个按钮是否可用public void checkButton() {    //如果页码已经是第一页了    if (PAGE_NOW <= 0) {        mNotaPrepage.setEnabled(false);        //如果不设置的话,只要进入一次else if ,那么下一页按钮就一直是false,不可点击状态        mNotaNextpage.setEnabled(true);    }    //值的长度减去前几页的长度,剩下的就是这一页的长度,如果这一页的长度比View_Count小,表示这是最后的一页了,后面在没有了。    else if (mDatas.size() - PAGE_NOW * ITEM_COUNT <= ITEM_COUNT) {        mNotaNextpage.setEnabled(false);        mNotaPrepage.setEnabled(true);    } else {        //否则两个按钮都设为可用        mNotaPrepage.setEnabled(true);        mNotaNextpage.setEnabled(true);    }}

Adapter中

重写 getCount()方法

@Overridepublic int getCount() {    //  数据的总数    int ori = ITEM_COUNT * PAGE_NOW;    //值的总个数-前几页的个数就是这一页要显示的个数,如果比默认的值小,说明这是最后一页,只需显示这么多就可以了    if (mDatas.size() - ori < ITEM_COUNT) {        return mDatas.size() - ori;    } else {        //如果比默认的值还要大,说明一页显示不完,还要用换一页显示,这一页用默认的值显示满就可以了。        return ITEM_COUNT;    }}

getView方法

@Overridepublic View getView(int i, View view, final ViewGroup viewGroup) {    ViewHolder holder;    if (view == null) {        view = mInflater.inflate(R.layout.item_document_lv, viewGroup, false);        holder = new ViewHolder(view);        view.setTag(holder);    } else {        holder = (ViewHolder) view.getTag();    }    /**     * 括号中的值是获取到item的准确索引     */    DocumentBean bean = (DocumentBean) mDatas.get(i + ITEM_COUNT * PAGE_NOW);    holder.document_item_number.setText(bean.getNumber());    holder.document_item_filename.setText(bean.getFileName());    holder.document_item_filesize.setText(bean.getFileSize() + "");    holder.document_item_uploadname.setText(bean.getUploadName());    holder.document_item_look.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            Toast.makeText(viewGroup.getContext(), "查看", Toast.LENGTH_SHORT).show();        }    });    holder.document_item_download.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            Toast.makeText(viewGroup.getContext(), "下载", Toast.LENGTH_SHORT).show();        }    });    return view;}

设置Adapter就行了

 mNotaLv = (ListView) inflate.findViewById(R.id.nota_lv);    mDatas = new ArrayList<>();    //假数据    for (int i = 0; i < 8; i++) {        mDatas.add(new DocumentBean(i + "", "随意字符", 12, "第一次"));    }    mAdapter = new DocumentAdapter(getContext(), mDatas);    mNotaLv.setAdapter(mAdapter);
原创粉丝点击