public class Paging extends Activity implements OnScrollListener
{
private ListView items_list;
/*
* 最后可视索引
*/
private int last_index = 0;
/*
* 一页显示条数
*/
private int items_count = 10;
/*
* 数据总长度
*/
private int data_size = 40;
/*
* ListView 适配器引用对象
*/
private PaginationAdapter paging_adapter;
private View load_more_view;
private Button load_more_item;
private Handler handler = new Handler();
private int DELAY_TIME = 2000;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
load_more_view = getLayoutInflater().inflate(R.layout.loadmore, null);
/*
* dispose Load Items
*/
disposeLoadItems();
items_list = (ListView)findViewById(R.id.lvNews);
items_list.addFooterView(load_more_view);
initializeAdapter();
items_list.setAdapter(paging_adapter);
items_list.setOnScrollListener(this);
}
/**
*
* @param
* @return void
* @throws
* @since TianTian
*/
public void onScrollStateChanged(AbsListView view, int scrollState)
{
int itemsLastIndex = paging_adapter.getCount()-1; //数据集最后一项的索引
int lastIndex = itemsLastIndex + 1;
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE && last_index == lastIndex)
{
// 如果是自动加载,可以在这里放置异步加载数据的代码
Log.v("-----------", "-------------------");
load_more_item = (Button)load_more_view.findViewById(R.id.loadMoreButton);
load_more_item.setText("正在加载中...");
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
loadMoreData();
paging_adapter.notifyDataSetChanged();
load_more_item.setText("查看更多..."); //恢复按钮文字
}
},DELAY_TIME);
paging_adapter.notifyDataSetChanged();
}
}
/**
*
* @param
* @return void
* @throws
* @since TianTian
*/
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount)
{
this.items_count = visibleItemCount;
last_index = firstVisibleItem + visibleItemCount - 1;
Log.e("========================= ","========================");
Log.e("items_count = ",items_count+"");
Log.e("firstVisibleItem = ",firstVisibleItem+"");
Log.e("visibleItemCount = ",visibleItemCount+"");
Log.e("totalItemCount = ",totalItemCount+"");
Log.e("========================= ","========================");
//如果所有的记录选项等于数据集的条数,则移除列表底部视图
if(totalItemCount == data_size + 1)
{
items_list.removeFooterView(load_more_view);
Toast.makeText(this, "数据全部加载完!", Toast.LENGTH_LONG).show();
}
}
{
private ListView items_list;
/*
* 最后可视索引
*/
private int last_index = 0;
/*
* 一页显示条数
*/
private int items_count = 10;
/*
* 数据总长度
*/
private int data_size = 40;
/*
* ListView 适配器引用对象
*/
private PaginationAdapter paging_adapter;
private View load_more_view;
private Button load_more_item;
private Handler handler = new Handler();
private int DELAY_TIME = 2000;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
load_more_view = getLayoutInflater().inflate(R.layout.loadmore, null);
/*
* dispose Load Items
*/
disposeLoadItems();
items_list = (ListView)findViewById(R.id.lvNews);
items_list.addFooterView(load_more_view);
initializeAdapter();
items_list.setAdapter(paging_adapter);
items_list.setOnScrollListener(this);
}
/**
*
* @param
* @return void
* @throws
* @since TianTian
*/
public void onScrollStateChanged(AbsListView view, int scrollState)
{
int itemsLastIndex = paging_adapter.getCount()-1; //数据集最后一项的索引
int lastIndex = itemsLastIndex + 1;
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE && last_index == lastIndex)
{
// 如果是自动加载,可以在这里放置异步加载数据的代码
Log.v("-----------", "-------------------");
load_more_item = (Button)load_more_view.findViewById(R.id.loadMoreButton);
load_more_item.setText("正在加载中...");
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
loadMoreData();
paging_adapter.notifyDataSetChanged();
load_more_item.setText("查看更多..."); //恢复按钮文字
}
},DELAY_TIME);
paging_adapter.notifyDataSetChanged();
}
}
/**
*
* @param
* @return void
* @throws
* @since TianTian
*/
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount)
{
this.items_count = visibleItemCount;
last_index = firstVisibleItem + visibleItemCount - 1;
Log.e("========================= ","========================");
Log.e("items_count = ",items_count+"");
Log.e("firstVisibleItem = ",firstVisibleItem+"");
Log.e("visibleItemCount = ",visibleItemCount+"");
Log.e("totalItemCount = ",totalItemCount+"");
Log.e("========================= ","========================");
//如果所有的记录选项等于数据集的条数,则移除列表底部视图
if(totalItemCount == data_size + 1)
{
items_list.removeFooterView(load_more_view);
Toast.makeText(this, "数据全部加载完!", Toast.LENGTH_LONG).show();
}
}