ListView刷新分页:
package com.example.android_listview_activity;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
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;
/**
* @desc 分页
* @author ljt
* @time 2014年8月27日 上午11:15:27
*/
public class MainActivity6 extends Activity implements OnScrollListener{
private ListView listView;
private ViewHolder holder;
private int visibleCount;
private MyAdapter adapter;
private ArrayList<Blog> blogList= new ArrayList<Blog>();
/**
* 初始化数据
*/
private void initData(){
for(int i = 1;i<=10;i++){
Blog blog = new Blog();
blog.setContent("内容:"+i);
blog.setTitle("标题"+i);
blogList.add(blog);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)this.findViewById(R.id.listView1);
View foot = getLayoutInflater().inflate(R.layout.foot,null);
// 添加尾部view
listView.addFooterView(foot);
listView.setOnScrollListener(this);
initData();
adapter = new MyAdapter();
listView.setAdapter(adapter);
}
/**
* 滚动
*/
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
System.out.println("firstVisibleItem=="+firstVisibleItem);
System.out.println("visibleItemCount=="+visibleItemCount);
System.out.println("totalItemCount=="+totalItemCount);
visibleCount = firstVisibleItem + visibleItemCount -1 ;
System.out.println("visibleItemCount is =="+visibleCount);
}
/**
* 线程之间通讯处理器
*/
private Handler handler = new Handler(){
public void handleMessage(Message msg) {
System.out.println("msg.what==:"+msg.what);
switch (msg.what) {
case 1:
// 数据加载完成 重新刷新listView
adapter.notifyDataSetChanged();
break;
default:
break;
}
};
};
/**
* 滚动状态变更
*/
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
System.out.println("visibleItemCount == "+visibleCount);
// 停止状态 并且是最后一个值
if(visibleCount == adapter.getCount() && scrollState == OnScrollListener.SCROLL_STATE_IDLE){
System.out.println("启动线程 == ");
// 加载新数据
Thread t = new Thread(new loadData());
t.start();
}
}
/**
* @desc 加载数据
* @author ljt
* @time 2014年8月27日 下午4:03:27
*/
class loadData implements Runnable{
@Override
public void run() {
System.out.println("线程initData == ");
initData();
// 通知主线程 数据已加载完毕
handler.sendEmptyMessage(1);
}
}
/**
* @desc 自定义适配器
* @author ljt
* @time 2014年8月27日 上午11:09:13
*/
class MyAdapter extends BaseAdapter{
/**
* How many items are in the data set represented by this Adapter.
*/
@Override
public int getCount() {
return blogList.size();
}
/**
* Get the data item associated with the specified position in the data set.
*/
@Override
public Object getItem(int position) {
return blogList.get(position);
}
/**
* Get the row id associated with the specified position in the list.
*/
@Override
public long getItemId(int position) {
return position;
}
/**
* 创建列表项
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(null == convertView){
convertView = getLayoutInflater().inflate(R.layout.source3,null);
TextView title = (TextView)convertView.findViewById(R.id.title);
TextView content = (TextView)convertView.findViewById(R.id.content);
holder = new ViewHolder();
holder.title = title;
holder.content = content;
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.title.setText(blogList.get(position).getTitle());
holder.content.setText(blogList.get(position).getContent());
return convertView;
}
}
class ViewHolder{
private TextView title;
private TextView content;
}
}