ListView分页加载

来源:互联网 发布:淘宝人参 编辑:程序博客网 时间:2024/04/29 14:14
1.总的思路是:用一个List来每次加载需要显示的数据。加载完后,此List要清空。

2.具体代码

public class MainActivity extends Activity implements OnClickListener {    // 数据源    private String[] strs = new String[] { "1w", "de", "cdc", "vre", "vae",            "cvds", "ergt", "trh", "jyyku", "yuk", "ytuuu", "koi", "awee",            "qwe", "zdss", "oui", "hjg", "chcfg", "xcvsdr", "asfa", "fb",            "breq", "WEGRG", "fsr", "awaw", "grtt", "trh", "nh", "xfds",            "serew", "hn", "11322" };    // 临时存储需要加载的数据    private ArrayList<String> list = new ArrayList<String>();    private ListView listView = null;    //上一页按钮    private Button bt_previousPage = null;    //下一页按钮    private Button bt_nextPage = null;    //显示当前是第几页    private TextView tv_currentPage = null;    //显示总页数    private TextView tv_totalPage = null;    // 总的数据条数    private int size = 0;    // 当前页    private int page = 0;    // 总页数    private int totalPages = 0;    // 一页要显示的条数    private int pageSize = 10;    //自定义显示的适配器    private StrAdapter adapter = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 初始化控件        findViews();        // 得到总的数据条数        size = strs.length;        // 得到总的页数        if (size % pageSize == 0) {            totalPages = size / pageSize;        } else {            totalPages = size / pageSize + 1;        }        // 显示总页数        tv_totalPage.setText(totalPages + "");        // 开始分页显示        if (size > pageSize) {            for (int i = 0; i < pageSize; i++) {                //加载需要显示的数据                list.add(strs[i]);            }            //还需要显示的数据            size = size - pageSize;            //当前页数+1            page++;        } else {            for (int i = 0; i < strs.length; i++) {                list.add(strs[i]);            }            page++;        }        // 显示当前页数        tv_currentPage.setText(page + "");        // 绑定适配器显示数据        adapter = new StrAdapter(this, list);        listView.setAdapter(adapter);        // 监听点击事件        bt_previousPage.setOnClickListener(this);        bt_nextPage.setOnClickListener(this);    }    // 加载下一页    public void getNextPageData() {        if (size > pageSize) {            list.clear();            for (int i = 0; i < pageSize; i++) {                list.add(strs[i + page * 10]);            }            size = size - pageSize;            page++;        } else if (size > 0 && size <= pageSize) {            list.clear();            for (int i = 0; i < size; i++) {                list.add(strs[i + page * pageSize]);            }            size = size - pageSize;            page++;        } else {        }        // 更新当前页        tv_currentPage.setText(page + "");    }    public void getPreviousPageData() {        if (page >= 2) {            list.clear();            for (int i = 0; i < 10; i++) {                list.add(strs[i + (page - 2) * pageSize]);            }            page--;        } else {        }        size = strs.length - page * pageSize;        // 更新当前页        tv_currentPage.setText(page + "");    }    @Override    public void onClick(View v) {        // TODO Auto-generated method stub        if (v.getId() == R.id.bt_nextPage) {            getNextPageData();            adapter.notifyDataSetChanged();        } else if (v.getId() == R.id.bt_previousPage) {            getPreviousPageData();            adapter.notifyDataSetChanged();        }    }    public void findViews() {        listView = (ListView) findViewById(R.id.listview);        bt_previousPage = (Button) findViewById(R.id.bt_previousPage);        bt_nextPage = (Button) findViewById(R.id.bt_nextPage);        tv_currentPage = (TextView) findViewById(R.id.tv_currentPage);        tv_totalPage = (TextView) findViewById(R.id.tv_totalPage);    }}  public class StrAdapter extends BaseAdapter {        private Context context;    private ArrayList<String> list = null;    public StrAdapter(Context context,ArrayList<String> list){        super();        this.context = context;        this.list = list;    }        @Override    public int getCount() {        // TODO Auto-generated method stub        return list.size();    }    @Override    public Object getItem(int arg0) {        // TODO Auto-generated method stub        return arg0;    }    @Override    public long getItemId(int arg0) {        // TODO Auto-generated method stub        return arg0;    }    @Override    public View getView(int position, View convertView, ViewGroup arg2) {        // TODO Auto-generated method stub        ViewHolder viewHolder = null;        if (convertView == null) {            View view = LayoutInflater.from(context).inflate(                    R.layout.str_adapter, null);            viewHolder = new ViewHolder();            viewHolder.tv = (TextView) view.findViewById(R.id.tv_str);            view.setTag(viewHolder);            convertView = view;        } else {            viewHolder = (ViewHolder) convertView.getTag();        }        viewHolder.tv.setText(list.get(position).toString());        return convertView;    }        class ViewHolder {        TextView tv;    }}  


3.效果

如图~




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 开过光的玉碎了怎么办 一脚刹车踩到底怎么办 p53基因型cc型该怎么办 人不小心掉进火山怎么办 奥林巴斯相机相片被锁了怎么办 文明53格外的奢侈品怎么办 答应了要请客钱不够怎么办 在家里面着急没办法干活怎么办 1岁宝宝脾气暴躁怎么办 档案不在中国海峡人才市场怎么办 海丰西中街吃鸡钱包给拿了怎么办? 朝鲜成为经济强国中国怎么办 窗户上有哈气水怎么办 阳台下水管声音好大怎么办 一开水龙头会响怎么办 海里遇到暗流怎么办贴吧 东海通忘记客户号怎么办 证券客户号忘了怎么办 热收缩机有空气怎么办 韩国国籍签证到期想回国怎么办 休闲裤裤脚长了怎么办 电大本科统考考不过怎么办 一案涉及两个法律关系怎么办 法院调解书被告不执行怎么办 电视cas授权已过期怎么办 网贷逾期被仲裁怎么办 word所选内容无效怎么办 wps批注不显示了怎么办 船舶挂靠船务公司去要怎么办 被螃蟹扎了肿了怎么办 手指被海鲜刺了怎么办 被海鲜刺进去了怎么办 手被海鲜扎了怎么办 环评设备写错了怎么办 物业对高空抛物怎么办 如果法官不公平判案我该怎么办? 民事案夸省审理案件不公平怎么办 积目头像未通过审核怎么办 电压不稳空调带不动怎么办 孩子吃了塑料珠怎么办 美的电压力锅打不开盖子怎么办