ListView分页功能(1)
来源:互联网 发布:java 文件编码 编辑:程序博客网 时间:2024/06/10 11:11
ListView分页功能,使用自定义View继承ListView
添加一个footerView用来提示加载数据状态
自定义ListView:
主要是在initView() 中添加FooterView
this.addFooterView(footLayout);
/** * 初始化View * @param context */private void initView(Context context) {LayoutInflater inflater = LayoutInflater.from(context);footLayout = (LinearLayout) inflater.inflate(R.layout.footer, null);this.addFooterView(footLayout);footLayout.setVisibility(View.VISIBLE);}
public class MyListView extends ListView {private LinearLayout footLayout;public MyListView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);initView(context);}public MyListView(Context context, AttributeSet attrs) {this(context, attrs, 0);// TODO Auto-generated constructor stub}public MyListView(Context context) {this(context, null);// TODO Auto-generated constructor stub}/** * 初始化View * @param context */private void initView(Context context) {LayoutInflater inflater = LayoutInflater.from(context);footLayout = (LinearLayout) inflater.inflate(R.layout.footer, null);this.addFooterView(footLayout);footLayout.setVisibility(View.VISIBLE);} }
MainActivity.java
package com.example.listviewpagedemo;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.LayoutInflater;import android.view.View;import android.view.Window;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.ArrayAdapter;import android.widget.LinearLayout;import android.widget.ListView;public class MainActivity extends Activity {/* * 底部刷新加载布局 */LinearLayout footLayout ;ListView lv;ArrayAdapter<String> adapter;List<String> datas = new ArrayList<String>();;boolean isLoadOver = false;boolean isBottom = false;private int index = 0;/** * 加载完了完数据通知根性 */Handler handler = new Handler() {public void handleMessage(Message msg) {if(msg.what != 1){return;}try {if(adapter == null){adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,datas);lv.setAdapter(adapter);initEvent();}adapter.notifyDataSetChanged();lv.setSelection(index);} catch (Exception e) {e.printStackTrace();}}; };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);initView();initDatas();}/** * 初始化ListView的事件 */private void initEvent() {lv.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {// TODO Auto-generated method stubif(isBottom && scrollState >= SCROLL_STATE_IDLE){isLoadOver = false;//再次加载数据initDatas();}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {if(firstVisibleItem + visibleItemCount == totalItemCount){index = firstVisibleItem + visibleItemCount ;isBottom = true;}else {isBottom = false;}}});}/** * 初始化数据 */private void initDatas() {try {if(!isLoadOver){new Thread(new Runnable(){@Overridepublic void run() {try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}//加载数据for (int i = 0; i < 10; i++) {datas.add("项目展示" + datas.size());}isLoadOver = true;handler.sendEmptyMessage(1);}}).start();} } catch (Exception e) {e.printStackTrace();} }/** * 初始化view */private void initView() {lv = (ListView)findViewById(R.id.listView1);}}
0 0
- ListView分页功能(1)
- ListView分页功能(2) 自定义View实现分页功能
- ListView实现分页功能
- ListView实现分页功能
- ListView实现分页功能
- ListView实现分页功能
- Android自定义ListView(二) - 可上拉加载的ListView(即具有分页功能的ListView)
- 安卓随手笔记十:(listview分页功能)
- ListView分页展示数据功能一(按钮方式)
- Android中ListView上拉加载(分页)功能
- ListView实现分页功能【附Demo源码】
- listView滑动刷新代码(分页功能)
- listView滑动刷新代码(分页功能)
- ListView实现分页功能【附Demo源码】
- Android listView滑动刷新代码(分页功能)
- listView滑动刷新代码(分页功能)
- listView滑动刷新代码(分页功能)
- listview分页联系人,并实现打电话功能,
- 浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式
- C语言零散知识学习
- 语义化标签及其示例1
- JZOJ 4603 颜料大乱斗【NOIP2016提高A组模拟7.15】
- Android AccessibilityService
- ListView分页功能(1)
- 好♂友の链接
- 第25章:所有结点对的最短路径问题—floyd-warshall和Johnson算法
- Ubuntu 14.04上解决zip格式文件解压文件名乱码问题
- c语言里面TMin不能写成-2147483648的原因
- 语义化标签及其示例2
- 2016.07.14【初中部 NOIP提高组 】模拟赛C
- jQuery事件绑定on()、bind()与delegate() 方法详解
- [Codeforces 451E] Devu and Flowers (母函数+lucas定理)