android分页处理-1

本文介绍了一个使用自定义适配器和监听器在Android中实现分页加载ListView的详细过程,包括如何处理自动加载和手动滚动事件,确保用户体验流畅且数据加载效率高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值