android listview 分页加载,Android中ListView分页加载数据

package com.andyidea.listview;

import java.util.ArrayList;

import java.util.List;

import com.andyidea.bean.News;

import Android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.util.Log;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AbsListView;

import android.widget.AbsListView.OnScrollListener;

import android.widget.BaseAdapter;

import android.widget.Button;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.Toast;

public class PaginationListViewActivity extends Activity implements OnScrollListener {

private ListView listView;

private intvisibleLastIndex=0;   //最后的可视项索引

private int visibleItemCount;       // 当前窗口可见项总数

private intdatasize=38;          //模拟数据集的条数

private PaginationAdapter adapter;

private View loadMoreView;

private Button loadMoreButton;

private Handlerhandler=newHandler();

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

loadMoreView=getLayoutInflater().inflate(R.layout.loadmore, null);

loadMoreButton= (Button)loadMoreView.findViewById(R.id.loadMoreButton);

loadMoreButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

loadMoreButton.setText("正在加载中...");   //设置按钮文字

handler.postDelayed(new Runnable() {

@Override

public void run() {

loadMoreData();

adapter.notifyDataSetChanged();

loadMoreButton.setText("查看更多...");  //恢复按钮文字

}

},2000);

}

});

listView= (ListView)findViewById(R.id.lvNews);

listView.addFooterView(loadMoreView);    //设置列表底部视图

initializeAdapter();

listView.setAdapter(adapter);

listView.setOnScrollListener(this);

}

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

intitemsLastIndex=adapter.getCount()-1;  //数据集最后一项的索引

intlastIndex=itemsLastIndex+ 1;

if (scrollState== OnScrollListener.SCROLL_STATE_IDLE

&&visibleLastIndex== lastIndex) {

// 如果是自动加载,可以在这里放置异步加载数据的代码

}

}

@Override

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

this.visibleItemCount= visibleItemCount;

visibleLastIndex=firstVisibleItem+ visibleItemCount - 1;

Log.e("========================= ","========================");

Log.e("firstVisibleItem=",firstVisibleItem+"");

Log.e("visibleItemCount=",visibleItemCount+"");

Log.e("totalItemCount=",totalItemCount+"");

Log.e("========================= ","========================");

//如果所有的记录选项等于数据集的条数,则移除列表底部视图

if(totalItemCount== datasize+1){

listView.removeFooterView(loadMoreView);

Toast.makeText(this, "数据全部加载完!", Toast.LENGTH_LONG).show();

}

}

/**

* 初始化ListView的适配器

*/

private void initializeAdapter(){

Listnewnews= new ArrayList();

for(inti=1;i<=10;i++){

Newsitems=newNews();

items.setTitle("Title"+i);

items.setContent("This is News Content"+i);

news.add(items);

}

adapter=newPaginationAdapter(news);

}

/**

* 加载更多数据

*/

private void loadMoreData(){

intcount=adapter.getCount();

if(count+10<= datasize){

for(inti=count+1; i<=count+10; i++){

Newsitem=newNews();

item.setTitle("Title"+i);

item.setContent("This is News Content"+i);

adapter.addNewsItem(item);

}

}else{

for(inti=count+1; i<=datasize; i++){

Newsitem=newNews();

item.setTitle("Title"+i);

item.setContent("This is News Content"+i);

adapter.addNewsItem(item);

}

}

}

class PaginationAdapter extends BaseAdapter{

ListnewsItems;

public PaginationAdapter(Listnewsitems){

this.newsItems=newsitems;

}

@Override

public int getCount() {

return newsItems.size();

}

@Override

public Object getItem(int position) {

return newsItems.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View view, ViewGroup parent) {

if(view== null){

view=getLayoutInflater().inflate(R.layout.list_item, null);

}

//新闻标题

TextViewtvTitle= (TextView)view.findViewById(R.id.newstitle);

tvTitle.setText(newsItems.get(position).getTitle());

//新闻内容

TextViewtvContent= (TextView)view.findViewById(R.id.newscontent);

tvContent.setText(newsItems.get(position).getContent());

return view;

}

/**

* 添加数据列表项

* @param newsitem

*/

public void addNewsItem(News newsitem){

newsItems.add(newsitem);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值