Android ListView加载更多
来源:互联网 发布:网店美工毕业论文 编辑:程序博客网 时间:2024/06/06 00:59
先看效果:
ListView的footer布局:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="10dp" android:paddingTop="10dp" > <TextView android:id="@+id/pulldown_footer_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="加载更多日志" android:textSize="15dp" /> <ProgressBar android:id="@+id/pulldown_footer_loading" style="@android:style/Widget.ProgressBar.Small.Inverse" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="20dp"/></RelativeLayout>
ListView的item和main_activity布局很简单,分别是一个TextView和ListView,不再贴出。
MainActivity代码贴出:
import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView.OnScrollListener;import android.widget.AbsListView;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.RelativeLayout;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity{private ListView listview;private LayoutInflater inflater;private List<String> arrays = new ArrayList<String>();private RelativeLayout footer;private MyAdapter adapter;// 每页显示条数private Integer perpage = 20;// 当前页数private Integer currentpage = 1;// 最大页数private Integer maxpage = 1;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setMaxPage(40);loadData(currentpage, perpage);inflater = getLayoutInflater();listview = (ListView) this.findViewById(R.id.pulldownview);footer = (RelativeLayout) View.inflate(getApplicationContext(), R.layout.pulldown_footer, null);listview.addFooterView(footer, null, true);adapter = new MyAdapter();listview.setAdapter(adapter);listview.setOnScrollListener(new OnScrollListener(){@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState){if (view.getLastVisiblePosition() == view.getCount() - 1){if (currentpage != maxpage){currentpage++;loadData(currentpage, perpage);adapter.notifyDataSetChanged();} else{Toast.makeText(getApplicationContext(), "没有更多的数据!", Toast.LENGTH_SHORT).show();listview.removeFooterView(footer);}}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount){}});}/** * 模拟分页查询数据 * * @param currentpage当前页数 * @param perpage * 每页显示数 */private void loadData(Integer currentpage, Integer perpage){// 起始数据Integer firstResult = (currentpage - 1) * perpage;// 获取的最大数据Integer maxResult = currentpage * perpage;System.out.println("firstResult:"+firstResult+" "+"maxResult:"+maxResult);// select * from database where XXXX order by XX limit firstResult,maxResult //order by可省略,但有order by时limit必需在它后面for (; firstResult < maxResult; firstResult++){arrays.add("这是测试数据" + (firstResult+1));}}/** * 模拟获取最大页数 * * @param total * 总的数据 */private void setMaxPage(Integer total){if (total % perpage == 0){maxpage = total / perpage;} else{maxpage = total / perpage + 1;}System.out.println("maxpage:"+maxpage);}private class MyAdapter extends BaseAdapter{@Overridepublic int getCount(){return arrays == null ? 0 : arrays.size();}@Overridepublic Object getItem(int position){return null;}@Overridepublic long getItemId(int position){return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent){ViewHolder holder;if (convertView == null){holder = new ViewHolder();convertView = inflater.inflate(R.layout.item_list, null);holder.textView = (TextView) convertView.findViewById(R.id.text);convertView.setTag(holder);} else{holder = (ViewHolder) convertView.getTag();}holder.textView.setText(arrays.get(position));return convertView;}}private static class ViewHolder{TextView textView;}}
0 0
- Android ListView加载更多
- Android ListView点击加载更多
- Android ListView列表 刷新和加载更多
- Android ListView 下拉刷新 点击加载更多
- 实现Android ListView 自动加载更多内容
- android listview 下拉刷新以及加载更多
- android listview 下拉加载更多demo
- Android ListView列表 刷新和加载更多
- Android listview 加载更多定位问题
- Android ListView实现下拉刷新、加载更多
- [Android]自定义ListView:上拉加载更多
- android-----ListView上拉加载更多实现
- Android中ListView分页加载更多数据
- listview刷新、加载更多
- ListView加载更多
- listview加载更多
- listView下拉加载更多
- listView的加载更多
- epoll学习(二)
- 反转字符串的单词
- 用况图学习总结--OOAD
- 用Org-mode实践《奇特的一生》
- bzoj1433[ZJOI2009]假期的宿舍
- Android ListView加载更多
- eclipse报错: permission is only granted to system apps
- java语言的科学与艺术 第六章 课后编程
- C和指针 学习笔记-3.数组与指针
- 关于面向对象的一些思想--OOAD
- final关键字 -----JAVA基础-------
- 学习OpenCV 第二版<1-4>:The Origin of OpenCV
- 2014百度之星复赛解题报告:The Patterns
- 黑马程序员-------分支结构