ListView分页功能(1)
2016-07-15 19:14
337 查看
ListView分页功能,使用自定义View继承ListView
添加一个footerView用来提示加载数据状态
![](https://img-blog.csdn.net/20160715191713671?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
自定义ListView:
主要是在initView() 中添加FooterView
this.addFooterView(footLayout);
MainActivity.java
添加一个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(); } }; }; @Override protected 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() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub if(isBottom && scrollState >= SCROLL_STATE_IDLE){ isLoadOver = false;//再次加载数据 initDatas(); } } @Override public 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(){ @Override public 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); } }
相关文章推荐
- Android App中自定义View视图的实例教程
- Android中自定义View实现圆环等待及相关的音量调节效果
- Android开发使用自定义view实现ListView下拉的视差特效功能
- 自定义图表控件--同时显示柱状图和折线图
- android自定义View的用法
- android自定义控件实例
- 自定义view的自定义属性的引用
- 自定义带圆点ViewPager
- android 自定义View onMeasure
- Android中inflate和merge结合使用
- android在自定义View的xml中设置自定义的成员属性
- View与ViewGroup--实现QQ左滑删除
- 自定义android进度条
- android基础之自定义view
- 关于自定义View的一些总结
- 自定义创建View
- 自定义Android圆点指示器
- 【Android】自定义View实现信封红蓝边/收货地址线条
- 自定义View(一)
- Android自定义组件:一个波浪形的组件