package com.parabola.main;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
public class ListViewReadImageAscy extends Activity {
private ImageAdapter adapter;//数据源
private ArrayList<Bean> beans = new ArrayList<Bean>(); //内部类
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
for (int i = 0; i < 15; i++) {
Bean b = new Bean();
b.setImage(BitmapFactory.decodeResource(getResources(), R.drawable.icon));
beans.add(b);
}
adapter = new ImageAdapter(this);
ListView listview = new ListView(this);
listview.setAdapter(adapter);
adapter.notifyDataSetChanged();
setContentView(listview);
new ImageLoadTask(this, adapter).execute();
}
public class Bean {
private Bitmap image;
public Bitmap getImage() {
return image;
}
public void setImage(Bitmap image) {
this.image = image;
}
}
public class ImageAdapter extends BaseAdapter {
public ImageAdapter(Context context) {
}
@Override
public int getCount() {
return beans.size();
}
@Override
public Bean getItem(int position) {
return beans.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView i = new ImageView(ListViewReadImageAscy.this); //getApplicationContext()
Bean b = beans.get(position);
//如果有图片则读取,没有则跳过
if (b.getImage() != null) {
i.setImageBitmap(b.getImage());
}
return i;
}
}
/**
* //异步加载图片,为了简洁这里请求图片链接先固定。每读取好一个图片就更新,这里界面比较简单,当然你可以做成
* 比较好的,像很多好的软件都有这种效果,先一个loading的效果,一旦有图片了就去掉loading,显示图片。
*
* //这里还啰嗦一点就是AsyncTask里面重载的方法doInBackground操作不能涉及到更新UI界面,不然会出错。
* 虽这样说,但是有时候遇到像我这种情况时,是很难知道出错就是这个原因导致的。
*
* 异步加载一个view时,如果
* 那个view里面有EditText,EditText在每次加载view都会触发焦点,这时候异步就会出错。可能我这样说不太清楚,
* 但是如果试试就会发现这种情况。
*/
public class ImageLoadTask extends AsyncTask<Void, Void, Void> {
private ImageAdapter adapter;
// 初始化
public ImageLoadTask(Context context, ImageAdapter adapter) {
this.adapter = adapter;
}
@Override
protected Void doInBackground(Void... params) {
for (int i = 0; i < adapter.getCount(); i++) {
Bean bean = adapter.getItem(i);
Bitmap bitmap = BitmapFactory
.decodeStream(Request
.HandlerData("http://avatar.profile.csdn.net/A/E/5/2_piaopiaohu123.jpg"));
bean.setImage(bitmap);
publishProgress(); // 通知去更新UI
}
return null;
}
public void onProgressUpdate(Void... voids) {
if (isCancelled())
return;
// 更新UI
adapter.notifyDataSetChanged();
}
}
}

yxkfw
- 粉丝: 86
最新资源
- 01Studio CanMV K230开发板 3路摄像头显示,默认外接HDMI显示器
- yolov13夜间场景车辆检测权重+标注好的夜间场景车辆检测数据集+pyqt界面
- 新能源锂电池项目中欧姆龙NJ PLC程序设计:梯形图与ST语言混合编程及电子凸轮应用 精选版
- 基于Maxwell电磁仿真的变压器设计与铁芯损耗计算优化方法 - 电磁仿真
- 跨领域条件下的目标识别与检测研究
- YOLOv13夜间场景车辆检测,包含训练好的夜间场景道路上车辆检测权重yolov13-main-sts-dark-car-detection-data.zip
- 苏州大学电力电子技术课程仿真实验项目-电力电子变换器仿真开关电源设计逆变器控制PWM调制技术Saber软件应用电路拓扑分析功率半导体器件特性研究-用于ELEA2015课.zip
- YOLOv12夜间场景车辆检测,包含训练好的夜间场景道路上车辆检测权重+pyqt界面
- 西门子S7-300PLC与TP900触摸屏在污水处理中的自动化控制及博途V15.1集成应用
- YOLOv12夜间场景车辆检测,包含训练好的夜间场景道路上车辆检测权重,以及PR曲线,loss曲线等等
- 《基于欧姆龙NJ501-1400的锂电池铝壳全自动二次注液机:分布式总线控制与高效转盘式结构设计》
- 基于SCL语言的RS485通讯程序实现:变频器正反转及停止操作与校验码优化 · PLC编程 全面版
- YOLO 算法在目标检测领域的应用解析
- 新能源PLC程序:欧姆龙NJ系列,多轴控制与凸轮同步的完整面向对象编程资料
- 基于OpenGLES的iOS平台32BGRA图像渲染与旋转处理工具-支持32位BGRA格式图像渲染-纹理旋转功能-集成YUV420P格式支持-专为视频处理优化的高性能图形渲染框架-.zip
- 电力系统源荷不确定性优化调度模型研究:MATLAB与YALMIP联合应用实现非线性目标的线性转化,引入模糊机会约束与碳交易策略 - 碳交易 全面版
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


