package com.challen;
import java.util.Vector;
import cindy.android.test.synclistview.R;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class TestListViewActivity extends Activity implements
AdapterView.OnItemClickListener {
ListView viewBookList;
BookItemAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
viewBookList = (ListView) findViewById(R.id.viewBookList);
adapter = new BookItemAdapter(this, viewBookList);
viewBookList.setAdapter(adapter);
viewBookList.setOnItemClickListener(this);
reload();
}
private void reload() {
adapter.clean();
// loadStateView.startLoad();
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2 * 1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
loadDate();
sendMessage(REFRESH_LIST);
}
}).start();
}
public void loadDate() {
for (int i = 0; i < 100; i++) {
adapter.addBook("我是challen的测试异步加" + i, "1",
"http://ww1.sinaimg.cn/thumbnail/80ab1ad3gw1dx8tfjvbgdj.jpg");
adapter.addBook("小美" + i, "2",
"http://ww2.sinaimg.cn/thumbnail/7f9fd9a9jw1dtyrqrh4mjj.jpg");
adapter.addBook("金总" + i, "3",
"http://ww3.sinaimg.cn/thumbnail/9d57e8e4jw1dx6topumz5j.jpg");
adapter.addBook("创意铺子" + i, "4",
"http://www.pfwx.com/files/article/image/3/3237/3237s.jpg");
adapter.addBook("人名日报" + i, "5",
"http://ww2.sinaimg.cn/thumbnail/9263d293jw1dx8snx58s7j.jpg");
adapter.addBook("名字是乱明的" + i, "6",
"http://tp1.sinaimg.cn/1660452532/50/5646449168/0");
adapter.addBook("帅哥即将出现" + i, "7",
"http://p1.qhimg.com/t01a869bb64c7f3d8c6.png");
adapter.addBook("注意了哦" + i, "8",
"http://www.baidu.com/img/baidu_jgylogo3.gif");
adapter.addBook("来拉" + i, "9",
"http://tp4.sinaimg.cn/2190322767/50/5605436918/1");
adapter.addBook("这个就是我啦" + i, "10",
"http://avatar.csdn.net/E/7/2/3_jkingcl.jpg");
}
}
private static final int REFRESH_LIST = 0x10001;
public static final int SHOW_STR_TOAST = 0;
public static final int SHOW_RES_TOAST = 1;
private Handler pichandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (!Thread.currentThread().isInterrupted()) {
handleOtherMessage(msg.what);
}
}
};
public void sendMessage(int flag) {
pichandler.sendEmptyMessage(flag);
}
protected void handleOtherMessage(int flag) {
switch (flag) {
case REFRESH_LIST:
adapter.notifyDataSetChanged();
default:
break;
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
}
public class BookItemAdapter extends BaseAdapter {
public class BookModel {
public String book_id;
public String out_book_url;
public String author;
public String book_state_s;
public String leading_role;
public String update_time;
public String book_name;
public String out_book_pic;
public String sort_id;
public String last_update_section_title;
public String last_update_section_url;
public String introduction;
}
private LayoutInflater mInflater;
private Vector<BookModel> mModels = new Vector<BookModel>();
private ListView mListView;
SyncImageLoader syncImageLoader;
public BookItemAdapter(Context context, ListView listView) {
mInflater = LayoutInflater.from(context);
syncImageLoader = new SyncImageLoader();
mListView = listView;
/*
*
* 这一句话取消掉注释的话,那么能更加的节省资源,不过体验稍微有点,
* 你滑动的时候不会读取图片,当手放开后才开始度图片速度更快,你们可以试一试
* */
// mListView.setOnScrollListener(onScrollListener);
}
public void addBook(String book_name, String author, String out_book_pic) {
BookModel model = new BookModel();
model.book_name = book_name;
model.author = author;
model.out_book_pic = out_book_pic;
mModels.add(model);
}
public void clean() {
mModels.clear();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mModels.size();
}
@Override
public Object getItem(int position) {
if (position >= getCount()) {
return null;
}
return mModels.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item_adapter,
null);
}
BookModel model = mModels.get(position);
convertView.setTag(position);
ImageView iv = (ImageView) convertView.findViewById(R.id.sItemIcon);
TextView sItemTitle = (TextView) convertView
.findViewById(R.id.sItemTitle);
TextView sItemInfo = (TextView) convertView
.findViewById(R.id.sItemInfo);
sItemTitle.setText(model.book_name);
sItemInfo.setText(model.out_book_url);
// 添加�?��背景在滑动的时�?就会显示背景而不是其他的缓存的照片,用户体验更好
iv.setBackgroundResource(R.drawable.rc_item_bg);
syncImageLoader.loadImage(position, model.out_book_pic,
imageLoadListener, model.author);
return convertView;
}
SyncImageLoader.OnImageLoadListener imageLoadListener = new SyncImageLoader.OnImageLoadListener() {
@Override
public void onImageLoad(Integer t, Drawable drawable) {
// BookModel model = (BookModel) getItem(t);
View view = mListView.findViewWithTag(t);
if (view != null) {
ImageView iv = (ImageView) view
.findViewById(R.id.sItemIcon);
iv.setBackgroundDrawable(drawable);
}
}
@Override
public void onError(Integer t) {
BookModel model = (BookModel) getItem(t);
View view = mListView.findViewWithTag(model);
if (view != null) {
ImageView iv = (ImageView) view
.findViewById(R.id.sItemIcon);
iv.setBackgroundResource(R.drawable.rc_item_bg);
}
}
};
public void loadImage() {
int start = mListView.getFirstVisiblePosition();
int end = mListView.getLastVisiblePosition();
if (end >= getCount()) {
end = getCount() - 1;
}
syncImageLoader.setLoadLimit(start, end);
syncImageLoader.unlock();
}
AbsListView.OnScrollListener onScrollListener = new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case AbsListView.OnScrollListener.SCROLL_STATE_FLING:
syncImageLoader.lock();
break;
case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
loadImage();
break;
case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
syncImageLoader.lock();
break;
default:
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
};
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android listview实现图片的异步加载-IT计算机-毕业设计.zip (88个子文件)
listview实现图片的异步加载
listview实现图片的异步加载
TestSyncListView
bin
classes.dex 18KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
loading_l008.png 1012B
btn_ent_s.9.png 946B
rc_item_bg.9.png 194B
list_line.png 89B
loading_l004.png 1011B
ic_launcher.png 2KB
item_higlight.9.png 174B
loading_l001.png 1017B
loading_l002.png 1007B
loading_l005.png 1000B
loading_l006.png 1008B
loading_l003.png 1KB
btn_ent.9.png 968B
bg.9.png 174B
topbar_bg.9.png 164B
tabbar_bg.9.png 186B
loading_l007.png 1021B
scrollbar.9.png 272B
jarlist.cache 119B
classes
cindy
android
test
synclistview
BuildConfig.class 371B
R$layout.class 500B
R$id.class 719B
R$drawable.class 1KB
R$attr.class 379B
R.class 803B
R$string.class 503B
R$color.class 522B
R$anim.class 432B
R$style.class 527B
com
challen
TestListViewActivity$2.class 939B
SyncImageLoader$2.class 1KB
SyncImageLoader$1.class 2KB
TestListViewActivity.class 4KB
TestListViewActivity$BookItemAdapter$1.class 2KB
SyncImageLoader$OnImageLoadListener.class 355B
TestListViewActivity$BookItemAdapter.class 4KB
SyncImageLoader$4.class 1KB
TestListViewActivity$1.class 902B
TestListViewActivity$BookItemAdapter$2.class 1KB
TestListViewActivity$BookItemAdapter$BookModel.class 964B
SyncImageLoader$3.class 1KB
SyncImageLoader.class 6KB
resources.ap_ 32KB
TestSyncListView.apk 44KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
values
drawables.xml 442B
colors.xml 241B
strings.xml 246B
styles.xml 1KB
drawable-mdpi
loading_l008.png 1012B
btn_ent_s.9.png 966B
item.xml 585B
rc_item_bg.9.png 100B
list_line.png 89B
loading_l004.png 1011B
ic_launcher.png 3KB
btn.xml 762B
item_higlight.9.png 89B
loading_l001.png 1017B
loading_l002.png 1007B
loading_l005.png 1000B
loading_l006.png 1008B
loading_l003.png 1KB
btn_ent.9.png 1KB
bg.9.png 89B
topbar_bg.9.png 93B
tabbar_bg.9.png 104B
loading_l007.png 1021B
scrollbar.9.png 147B
anim
loading_l.xml 793B
layout
loading.xml 1KB
main.xml 871B
item_adapter.xml 2KB
gen
cindy
android
test
synclistview
BuildConfig.java 173B
R.java 3KB
proguard.cfg 1KB
.settings
org.eclipse.core.resources.prefs 121B
org.eclipse.jdt.core.prefs 629B
src
com
challen
SyncImageLoader.java 5KB
TestListViewActivity.java 8KB
.project 852B
.classpath 364B
project.properties 360B
AndroidManifest.xml 1KB
共 88 条
- 1
资源评论
芝麻粒儿
- 粉丝: 6w+
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功