android分页代码
2015-11-27 20:25
411 查看
package com.example.lesson5; import java.util.ArrayList; import java.util.List; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; public class DivicepageActivity extends Activity implements OnScrollListener { private List<Student> list = null; int index = 0; MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_list_view); list = new ArrayList<Student>(); ListView listView = (ListView) findViewById(R.id.xListView); initData(); View view = getLayoutInflater().inflate(R.layout.activity_foot,null); listView.addFooterView(view); adapter = new MyAdapter(); adapter.setData(list); listView.setAdapter(adapter); //添加监听 listView.setOnScrollListener(this); } //给List里面赋值 public void initData(){ for (int i = 0; i < 20; i++) { list.add(new Student("name"+index, "boy"+index, index++)); } } //创建自己的Adapter,往组件里面添加数据 private class MyAdapter extends BaseAdapter { private List<Student> data = new ArrayList<Student>(); @SuppressWarnings("unused") public List<Student> getData() { return data; } public void setData(List<Student> data) { this.data = data; } @Override public int getCount() { // TODO Auto-generated method stub return data.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return data.get(arg0); } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } //采用缓存机制来节省资源 @Override public View getView(int arg0, View convertView, ViewGroup arg2) { ViewHolder holder = null; if (convertView == null) { convertView = getLayoutInflater().inflate( R.layout.activity_mylistview, null); holder = new ViewHolder(); holder.nameText = (TextView) convertView .findViewById(R.id.nameText); holder.sexText = (TextView) convertView .findViewById(R.id.sexText); holder.ageText = (TextView) convertView .findViewById(R.id.ageText); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } System.out.println(data.get(arg0).toString()); holder.nameText.setText(data.get(arg0).getName()); holder.sexText.setText(data.get(arg0).getSex()); holder.ageText.setText(data.get(arg0).getAge()+""); return convertView; } } public static class ViewHolder { TextView nameText; TextView sexText; TextView ageText; } int currentTotal=0; @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //滚动时一直回调,直到停止滚动时才停止回调。单击时回调一次。 //firstVisibleItem:当前能看见的第一个列表项ID(从0开始) //visibleItemCount:当前能看见的列表项个数(小半个也算) //totalItemCount:列表项共数 //计算当前数据的条数 currentTotal=firstVisibleItem+visibleItemCount-1; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub //正在滚动时回调,回调2-3次,手指没抛则回调2次。scrollState = 2的这次不回调 //回调顺序如下 //第1次:scrollState = SCROLL_STATE_TOUCH_SCROLL(1) 正在滚动 //第2次:scrollState = SCROLL_STATE_FLING(2) 手指做了抛的动作(手指离开屏幕前,用力滑了一下) //第3次:scrollState = SCROLL_STATE_IDLE(0) 停止滚动 //当屏幕停止滚动时为0;当屏幕滚动且用户使用的触碰或手指还在屏幕上时为1; //由于用户的操作,屏幕产生惯性滑动时为2 //判断滚动条是否处于空闲状态,并且数据条数等于链表的长度 if((scrollState==OnScrollListener.SCROLL_STATE_IDLE) &&(currentTotal==list.size())){ new MyThread().start(); } } public class MyThread extends Thread{ @Override public void run() { initData(); try { Thread.sleep(5000); handler.sendEmptyMessage(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //子线程与主线程通信,子线程不能改变主线程的数据,就需要一个中间类来传递信息,就是Handler类 @SuppressLint("HandlerLeak") private Handler handler=new Handler(){ public void handleMessage(android.os.Message msg) { switch (msg.what) { case 100: adapter.setData(list); adapter.notifyDataSetChanged(); break; default: break; } }; }; }
相关文章推荐
- Android开发之Spinner控件使用
- Android编程之BitmapFactory.decodeResource加载图片缩小的原因及解决方法
- 王学岗帧动画(一)——帧动画的简单实用
- 源码级分析Android系统启动流程
- 【Android笔记】ListView
- mac电脑批量解压android apk文件图形化工具--apkDecode
- android JNI生成.so文件(arm64-v8a等)配置
- 获取android 应用程序包名、图标、应用名称
- android studio开发环境搭建,国内服务器代理下载android sdk
- Android中使用Handler造成内存泄露的分析和解决
- 国内Android开发牛人
- Android简单的使用listview动态生成不同页面
- android下运行时动态链接dlopen()和dlsym()的实现
- Android自定义View动画(进度条)
- Android:Drawable资源详解
- Android权限之android:sharedUserId和签名
- android开发中,通过adb抓取log信息
- Android中system.img的两种格式及其相互转换方法
- android加载多图 LruCache与硬盘缓存融为一体
- android gifj加载