您的位置:首页 > 移动开发 > Android开发

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;
}
};
};
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: