package com.test.demo;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
import com.test.demo.tool.DataStation;
import com.test.demo.tool.DownLoadImgTaskController;
public class IndexActivity extends Activity {
private ListView mListView = null;
private ProductAdapter mAdapter = null;
private final static int PAGE_SIZE = 12; //每页显示商品数量
private int mLastItem = 0; //当前显示的最后一项, 用于更新list后, 重新定位。
private int mTotalPage = 0; //总页数
private int mCurrentPageNum = 0; //当前的页数
private boolean mFootFlag = false; //判断是否到达最后一页。
private LinearLayout mFootViewLayout = null;
private DataStation mDataStation = null; //图片存储类,单例模式
private List<Product> mProductsList = null; //所有商品存在这个list里,分页显示这里面的商品信息
private DownLoadImgTaskController mTaskController = null; //下载图片任务类
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
mTaskController = DownLoadImgTaskController.getController();
this.initParam();
this.initAdapter();
this.initListView();
initProuctsList();
if(!mFootFlag && mTotalPage <= 1){
mListView.removeFooterView(mFootViewLayout);
mFootFlag = true;
}
showNextPage();
}
public void initParam(){
mDataStation = DataStation.getDataStation();
mDataStation.setDefaultBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.icon));
}
public void initAdapter(){
mAdapter = new ProductAdapter(this,mDataStation.getDefaultBitmap());
mTaskController.setAdapter(this, mAdapter);
}
private void initProuctsList(){
mProductsList = new ArrayList<Product>();
for(int i = 0;i < 62;i++){
Product product = new Product();
product.setProductID(i + "");
product.setProductImgPath("http://www.baidu.com/img/baidu_sylogo1.gif");
product.setProductName(" 资源名称 "+i);
mDataStation.setBitmap(i+"", mDataStation.getDefaultBitmap());
mProductsList.add(product);
}
mCurrentPageNum = 1;
int size = mProductsList.size();
if(size % PAGE_SIZE == 0){
mTotalPage = size / PAGE_SIZE;
}else{
mTotalPage = size / PAGE_SIZE + 1;
}
}
public void initListView(){
mListView = (ListView)findViewById(R.id.searchList);
mFootViewLayout = UIFactory.createFootView(this);
//addFooterView方法一定要在setAdapter方法之前执行
mListView.addFooterView(mFootViewLayout);
mFootFlag = false;
mListView.setAdapter(mAdapter);
mListView.setOnScrollListener(new OnScrollListener() {
public void onScrollStateChanged(AbsListView paramAbsListView, int paramInt) {
if(mLastItem == mAdapter.getCount() && paramInt == SCROLL_STATE_IDLE){
mListView.postDelayed(new Runnable(){
public void run() {
showNextPage();
}}, 1500);
}
}
public void onScroll(AbsListView v, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// Log.e("xxxx" , "firstVisibleItem: "+firstVisibleItem +" visibleItemCount: "+visibleItemCount +" totalItemCount: "+totalItemCount);
mLastItem = firstVisibleItem + visibleItemCount - 1;
}
});
}
private void showNextPage(){
List<Product> list = new ArrayList<Product>();
if(!mFootFlag && mCurrentPageNum == mTotalPage){
mListView.removeFooterView(mFootViewLayout);
mFootFlag = true;
}
if(mCurrentPageNum > mTotalPage){
return;
}
if(mCurrentPageNum == mTotalPage){
list = mProductsList.subList((mCurrentPageNum - 1) * PAGE_SIZE, mProductsList.size());
}else{
list = mProductsList.subList((mCurrentPageNum - 1) * PAGE_SIZE, mCurrentPageNum * PAGE_SIZE);
}
mAdapter.addItemList(list);
mAdapter.notifyDataSetChanged();
Toast.makeText(this, "第" + mCurrentPageNum++ + "页,总共" + mTotalPage + "页", Toast.LENGTH_SHORT).show();
mTaskController.setList(list);
mTaskController.execute();
mListView.setSelection(mLastItem);
}
private Intent serviceIntent = null;
private void startService() {
serviceIntent = new Intent(this, OtherDownloadImageService.class);
serviceIntent.putExtra("mag", 2);
startService(serviceIntent);
}
@Override
protected void onResume() {
startService();
super.onResume();
}
@Override
protected void onStop() {
super.onStop();
stopService(serviceIntent);
}
//Activity关闭的时候一定要停止所有下载图片线程
private void cancelAllTasks(){
mTaskController.clearTasks();
}
public void onDestroy(){
super.onDestroy();
cancelAllTasks();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
android listview 分页显示 demo
共54个文件
class:22个
java:11个
png:8个
5星 · 超过95%的资源 需积分: 15 40 下载量 126 浏览量
2012-05-09
14:40:08
上传
评论
收藏 108KB ZIP 举报
温馨提示
android listview 分页显示例子, 利用map缓存图片, 分页显示。
资源推荐
资源详情
资源评论
收起资源包目录
ListViewPagingDemo.zip (54个子文件)
ListViewPagingDemo
AndroidManifest.xml 869B
res
layout
main_activity.xml 447B
list_product_layout.xml 585B
drawable-ldpi
icon.png 2KB
drawable-mdpi
icon.png 3KB
drawable-hdpi
divider.png 343B
icon.png 4KB
values
strings.xml 184B
proguard.cfg 1KB
src
com
test
demo
OtherDownloadImageService.java 2KB
IndexActivity.java 5KB
UIFactory.java 3KB
Product.java 865B
ProductAdapter.java 3KB
tool
DownLoadImageTask.java 2KB
BitmapCache.java 2KB
DataStation.java 948B
DownLoadImgTaskController.java 2KB
DownloadFileUtil.java 3KB
bin
classes
com
test
demo
OtherDownloadImageService.class 3KB
OtherDownloadImageService$1.class 1KB
R.class 496B
Product.class 1KB
R$layout.class 431B
R$attr.class 325B
IndexActivity.class 6KB
ProductAdapter.class 4KB
IndexActivity$1.class 2KB
IndexActivity$1$1.class 850B
R$id.class 444B
ProductAdapter$ViewHolder.class 537B
R$string.class 412B
UIFactory$1.class 814B
UIFactory.class 3KB
tool
DownLoadImgTaskController.class 3KB
DataStation.class 1KB
DownLoadImageTask$1.class 865B
DownloadFileUtil.class 3KB
DownLoadImageTask.class 4KB
BitmapCache.class 2KB
R$drawable.class 416B
res
drawable-ldpi
icon.png 2KB
drawable-mdpi
icon.png 2KB
drawable-hdpi
divider.png 280B
icon.png 4KB
classes.dex 22KB
ListPaging.apk 25KB
resources.ap_ 12KB
.classpath 356B
assets
project.properties 360B
default.properties 36B
.settings
org.eclipse.jdt.core.prefs 203B
.project 856B
gen
com
test
demo
R.java 946B
共 54 条
- 1
dikers
- 粉丝: 2
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页