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
- ListView分页加载
- listview分页加载
- listview分页加载问题
- ListView的分页加载
- ListView分页加载数据
- ListView 分页加载
- Android ListView 分页加载
- listview分页加载
- ListView分页加载数据
- listView分页加载数据
- listView 分页加载数据
- ListView分页加载数据
- listview分页加载!!!
- Listview分页加载
- listview分页加载问题
- ListView 分页加载数据
- listView分页加载数据
- 封装listview分页加载
- mysql常见错误
- Luajit2.0.4 Build错误
- iOS的socket开发so
- Spring Security HelloWord
- AngularJS笔记
- ListView分页加载
- spring mvc message-convert
- Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:RELEASE from any of t
- ['LeetCode']表达式求值
- jsp两种注释区别,<%%>和<%!%>的区别
- linux 目录个数和文件个数限制(单个目录下最大文件数)
- 适配器及适配器模式
- 指环式扫描器厂家
- picturebox出现滚动条