Layout1.8

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

}

猜你喜欢

转载自luan.iteye.com/blog/2109643
1.8
今日推荐