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; } }