18、ListView显示图片

[size=medium] ListView显示图片(只有文字显得很傻),很多了,效果图就不找了,这里主要是网络图片,利用上节网络图片获取的类。
先定义了一个类,ModelList,主要是存放ListView Item中的一些信息,比如用户名、标题、内容、预览图片的网络链接等。新建的包model下:[/size]

public class ModelList {
public String type; //数据类型,先忽略

public String icon; //头像链接
public String name; //用户名
public String time; //时间

public String title; //标题
public String data; //内容

public String preurl; //预览图片链接
public int width; //宽
public int height; //高
public String dataurl; //数据链接,先忽略

public String read; //阅读次数
}

[size=medium] ListView的Adapter,ListAdapter中:[/size]

public class ListAdapter extends BaseAdapter {

private Activity activity; //之前有定义,获取布局时用
private List<ModelList> datas; //一个列表,存放Item数据

private ImageLoad imgload; //网络图片加载
private LmageLoad lmgload; //忽略
private GifLoad gifload; //忽略

private int itemwidth; //Item的宽度,保证图片横向铺满

public ListAdapter(Activity activity,QListView listview){
this.activity=activity; //构造传进来一个Activity

itemwidth=(int)(DeviceInfo.width-activity.getResources().getDimension(R.dimen.padding_s)*2);

imgload=new ImageLoad(activity);
lmgload=new LmageLoad(activity);
gifload=new GifLoad(activity);

datas=new ArrayList<ModelList>();
//传进来一个ListView,想不出其他好的办法,先忽略
listview.setQRecyclerListener(rclistener);
}
//自己添加 一个函数,用于设定数据
public void setData(List<ModelList> datas){
this.datas=datas;
this.notifyDataSetChanged();//数据更新
}
//自己添加 一个函数,用于添加数据
public void addData(List<ModelList> datas){
this.datas.addAll(datas);
this.notifyDataSetChanged();
}
//自己添加 一个函数,用于添加数据
public void addData(ModelList data){
this.datas.add(data);
this.notifyDataSetChanged();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return datas.size();//返回datas的大小
}
…
}
getView中:
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final Holder holder;

if(convertView==null){
convertView=activity.getLayoutInflater().inflate(
R.layout.item_list, parent, false);

holder=new Holder();
convertView.setTag(holder);
}
else{
holder=(Holder)convertView.getTag();
}
//获取控件 holder.iv_icon=(ImageView)convertView.findViewById(R.id.iv_icon);
holder.tv_name=(TextView)convertView.findViewById(R.id.tv_name);
holder.tv_time=(TextView)convertView.findViewById(R.id.tv_time);
holder.tv_title=(TextView)convertView.findViewById(R.id.tv_title);
holder.tv_data=(TextView)convertView.findViewById(R.id.tv_data);
holder.rl_data=(RelativeLayout)convertView.findViewById(R.id.rl_data);
holder.tv_read=(TextView)convertView.findViewById(R.id.tv_read);
//根据当前位置获取数据
final ModelList data=datas.get(position); //获取Item数据
//父类和TAG在获取图片的时候要用
final View viewparent=convertView;
final int tagpre=position+1;
final int tagdata=-(position+1);

final int tagctrllmg=tagpre-1;//=position
final int tagctrlgif=tagdata+1;//=position

final int tagloadlmg=tagpre+1;//=position+2
final int tagloadgif=tagdata-1;//-(position+2)
//设置相应内容
holder.tv_name.setText(data.name);
holder.tv_time.setText(data.time);
holder.tv_title.setText(data.title);
if(data.data!=null){//有,设置显示
holder.tv_data.setText(data.data);
holder.tv_data.setVisibility(View.VISIBLE);
}
else{//无,隐藏
holder.tv_data.setVisibility(View.GONE);
}
if("txt".equals(data.type)){//仅有文字,隐藏下面的布局
holder.rl_data.setVisibility(View.GONE);
}
else if("lmg".equals(data.type)){//长图
LayoutParams lp=holder.rl_data.getLayoutParams();
lp.height=itemwidth*data.height/data.width;
holder.rl_data.setLayoutParams(lp);//设置高度,防止图片变形
holder.rl_data.setTag(tagpre);
Drawable pre=imgload.loadImage(viewparent,tagpre,data.preurl,ilcallback);
holder.rl_data.setBackground(pre);
holder.rl_data.setVisibility(View.VISIBLE);
//获取并设置图片
}
else{
LayoutParams lp=holder.rl_data.getLayoutParams();
lp.height=itemwidth*data.height/data.width;
holder.rl_data.setLayoutParams(lp);

holder.rl_data.setTag(tagpre);
Drawable pre=imgload.loadImage(viewparent,tagpre,data.preurl,ilcallback);
holder.rl_data.setBackground(pre);
holder.rl_data.setVisibility(View.VISIBLE);
//获取并设置图片,不用怀疑,和上面的一样
if("gif".equals(data.type)){

}
else if("vdo".equals(data.type)){

}

}

holder.tv_read.setText(data.read);

return convertView;
}

[size=medium] 获取图片的回掉监听器[/size]

private ImageLoadCallback ilcallback=new ImageLoadCallback() {

@SuppressLint("NewApi")
@Override
public void onSuccess(Drawable drawable, int tag, View viewParent) {
// TODO Auto-generated method stub
if(drawable!=null){
RelativeLayout rl_data=(RelativeLayout)(viewParent.findViewWithTag(tag));
if(rl_data!=null){
LayoutParams lp=rl_data.getLayoutParams();
lp.height=itemwidth*drawable.getMinimum
Height()/drawable.getMinimumWidth();
rl_data.setLayoutParams(lp);
rl_data.setBackground(drawable);
}
}
}
};

[size=medium] 附上获取设备屏幕大小的类tool/DeviceInfo[/size]

public class DeviceInfo {

public static int width;
public static int height;

public static void initDeviceInfo(Activity activity){
DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().
getMetrics(metrics);
width=metrics.widthPixels;
height=metrics.heightPixels;
}
}

[size=medium] initDeviceInfo初始化函数在MainActivity的onCreate中调用即可,不贴了。
设置数据测试,在ListFragment中刷新回掉中[/size]

private BGTaskListener bgtlistener=new BGTaskListener() {

@Override
public void taskFinish() {
// TODO Auto-generated method stub
System.out.println(rcvdata);
if(rcvdata!=null){
ModelList data=new ModelList();
data.type="gif";
data.name="img";
data.time="2017";
data.title="标题例子,大小如何。";
data.data="内容例子,大小如何。内容例子,大小如何。内容例子,大小如何。";
data.width=683;
data.height=1024;
data.preurl="http://pic17.nipic.com/
20111025/910362_220203957000_2.jpg";
data.dataurl="http://i2.img.969g.com/pub/imgx2016/
09/01/284_171350_425dc_lit.gif";
data.read="2K阅读 • 54回复 • 原创";
adapter.addData(data);

ModelList data1=new ModelList();
data1.type="lmg";
data1.name="img";
data1.time="2017";
data1.title="标题例子,大小如何。";
data1.data="内容例子,大小如何。内容例子,大小如何。内容例子,大小如何。";
data1.width=683;
data1.height=1024;
data1.preurl="http://pic4.nipic.com/
20091119/1951702_070512038271_2.jpg";
data1.dataurl="http://pic17.nipic.com/
20111025/910362_220203957000_2.jpg";
data1.read="2K阅读 • 54回复 • 原创";
adapter.addData(data1);

}
qlv_list.completeRefresh(QListView.ISSUCCESS);//完成刷新
}

@Override
public void taskDoing() {
// TODO Auto-generated method stub
rcvdata=Http.read("http://www.baidu.com");//一个自定义网络类,获取百度首页数据
}
};

[size=medium] 比较简单,刷新之后加入固定的数据(应该从网络上获取数据的,现在后台还没有写好),效果:[/size]
[img]http://dl2.iteye.com/upload/attachment/0125/3348/b9606138-bc1c-3235-940d-6cfaae96374f.gif[/img]
[color=gray][size=medium]注:并没有长图加载、GIF播放的按钮[/size][/color]

[align=right][size=medium]不要迷茫——2017/06/07[/size][/align]
C#在ListView中Subitem显示图片 这个程序实现了如何在ListView的列中显示图标或者图片,可以用于显示不同Item的状态。 立即下载

相关推荐

listView显示网络图片

动态加载网络图片,边下载边显示,图片不会错乱

如何在 C#中的listView 控件中显示图片?

文章目录图标加数字大图标形式 图标加数字 首先你需要在WinForm 中添加一个imagelist 控件。 在imagelist控件的图片集合中添加要显示的图片。 我的listView 中 View 属性 设置为 details(其它的没试)。然后将ListView的SmallImageList 属性赋值为添加的imagelist控件名。之后: listView1.SmallImageList=ImageListName; // SmallImageList 属性 ListViewItem lv =

流楚丶格念的博客 9310

listview 添加图片效果显示,加文字搜索提示

listview 添加图片效果显示,加文字搜索提示

在Listview上展示图片的两种方法(一)

SimpleAdapter用于ListView显示时可以自定义布局,但是用于展示图片并不是那么直接。有两种方法可以实现,一是利用setViewBinder进行绑定,二是重写getview方法。 首先,方法一: SimpleAdapter adapter = new SimpleAdapter( SecondActivity.this, mListData, R.layout.li

jellyliu的专栏 3475

别再乱提MR了!手把手教你配置GitLab的CI/CD与分支保护规则,让团队协作更丝滑

本文详细介绍了如何配置GitLab的CI/CD与分支保护规则,以优化团队协作流程。通过设置Protected Branches、MR流水线检查和自动化审批规则,有效防止不规范操作和合并冲突,提升开发效率与代码质量。特别强调MR(Merge Request)的正确使用,确保团队协作更丝滑。

weixin_28840591的博客 236

2026年信创系统技术应用专业人才培养基地建设方案(高职、信创新专业、人才培养、专业代码:510221)

响应国家信创产业战略及教育部新增“信创系统技术应用”专业(代码510221)的部署,联合麒麟软件、华为鸿蒙等领军企业,建设高水平信创人才培养基地。方案基于国家政策导向(如2027年央企全面国产化替代目标)和行业人才缺口(2025年缺口超80万人),提出以“产教融合、创新驱动”为核心,构建集教学、实训、认证于一体的综合性培养体系。 建设内容涵盖五大方向: 专业规划:分三阶段(2025-2030年)推进专业申报、课程开发与区域辐射,最终建成区域性信创技术创新平台。 课程体系:围绕运维、云计算、数据库、适配

啊碧根果的博客 1600

如何在listView中显示图片

如何在listView中显示图片1.初始化数据源,设置Adapter 2.定义adapter的内部类 3.布局文件xml

LIUCHANGSHUO的博客 628

Nacos漏洞利用工具V3.0.5实战:从认证绕开到内存马植入的全流程指南

本文详细解析了Nacos漏洞利用工具V3.0.5在实战中的应用,从认证绕开到内存马植入的全流程。文章深入探讨了如何利用Nacos的历史漏洞,如默认口令、认证逻辑绕过、Derby SQL注入及Jraft反序列化,实现权限提升与持久化控制,并提供了防御视角与加固建议,旨在帮助安全人员理解攻击链以加强防护。

h6j7k8l9p0的博客 484

C# 系统应用之ListView实现简单图片浏览器

本文主要是根据给同学讲解ListView控件显示图片写的一篇文章,主要包括:第一步 设计界面框架同时添加ImageList控件 第二步 使用OpenFileDialog控件打开显示图片 第三步 显示图片列表至ListView控件中 第四步 通过listView1_DoubleClick函数双击打开图片 第五步 显示上一张\下一张.文章是对关于ListView大图标显示列表的基础知识,同时包括自己遇到的问题及解决方法,希望对大家有所帮助.

杨秀璋的专栏 2万+

【NVIDIA-B200 GPU固件升级】NVIDIA Blackwell B200 GPU 固件更新全指南

B200 GPU 固件更新并非 “执行一条命令即可” 的简单操作,而是涉及 “版本兼容性校验、BMC 环境准备、UEFI 引导、Redfish 协议交互” 的系统性工程。从文档翻译与技术解析来看,NVIDIA 的更新流程设计围绕 “安全” 与 “稳定” 两大核心 —— 无论是 0.9 版本的 “跳板限制”,还是 UEFI Shell 的引导要求,本质都是为了避免因操作不当导致硬件损坏。对于数据中心运维人员,建议在更新前做好三项准备:① 确认 GPU 当前固件版本(通过查询),规划升级路径;

jundao1997的专栏 746

MFC Windows 程序设计[105]之彩色滚动条(附源码)

MFC是微软公司提供的一个类库(class libraries),用以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。有很多初学MFC的小伙伴们都觉得MFC比较难学,看书吧,看了就忘了,网上的一些教程又是写的含糊不清,故而学习起来很吃力...... 故此,本专栏亲自研究,实践,由易到难,层层深入,将调试过程中所遭所遇进行详细讲解,注意事项进行一一列举,希望能够帮助到各位初学MFC的小伙伴,避免走弯路,费时费力。

hnjzfwy的博客 520

Winform下使用ListView控件和ImageList控件显示图片缩略图

一、基本概念 1、ImageList控件 ImageList组件,又称为图片存储组件,它主要用于存储图片资源,然后在控件上显示出来,这样就简化了对图片的管理。ImageList组件的主要属性是Images,它包含关联控件将要使用的图片。每个单独的图片可以通过其索引值或键值来访问。 2、ListView控件 参考:ListView用法  ListView控件,又称为列表视图控件,它主要...

灰太狼的小秘密 1万+

虚拟电厂功率预测最佳实践白皮书

虚拟电厂(VPP)通过聚合分散的可再生能源资源,为电网提供可观测、可调度和可交易的解决方案。本文提出了一套功率预测方法论,并给出LSTM实现脚本,涵盖资源接入、数据治理、预测模型设计及市场交易闭环。针对风-光-储-负荷混合场景,该方法论强调轻量化部署和滚动优化,可有效提升预测精度和调度收益。未来研究将融合深度气象预报和强化学习,进一步优化VPP的协同调度能力。

专注AI大模型,软件混淆,授权 377

Android ListView从网络获取图片及文字显示(转)

上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示。事实上,一般是先获取Josn或sml数据,然后解释显示。我们先从网上获取xml,然后对其进行解析,最后显示在ListView上。具体步骤: 客户端发出请求,获取xml 客户端异步解析xml ListView将解析完的数据显示 一、Android客户端 ...

weixin_42602900的博客 1579

解决 maven编译项目-Fatal error compiling: 无效的目标发行版: 21 -> [Help 1]

惊奇的发现,maven没有用环境变量中设置好的JAVA_HOME目录,至此发现错误原因,原来执行java -version默认使用系统环境变量JAVA_HOME,而maven优先使用了windows的用户变量JAVA_HOME(这里之前忘记修改,仍然指向java8路径),修改用户变量JAVA_HOME指向java21或删除该用户变量JAVA_HOME(如无它用)后即可。打开maven包所在的目录,在maven的配置文件 mvn.cmd 文件中,设置java_home的目录。

litlit023的专栏 1801

全栈拆解华为乾崑 ADS 5:WEWA2.0智能体架构与安全风险场技术、实现多传感器全融合感知与主动安全预判、助力城市NOA/高速领航/全场景无人通行极致落地

华为乾崑ADS 5的核心颠覆性,不在于单一功能的小幅升级,而在于实现了自动驾驶从“工具式辅助驾驶”到“拟人化智能体驾驶”的全栈范式革命。通过WEWA 2.0端云协同AI智能体架构,解决了传统智驾决策僵硬、博弈能力弱、学习效率低的行业痛点;通过行业首发安全风险场技术,将自动驾驶安全体系从被动避险升级为主动预判,直接减半行车风险;通过乾崑OS专属车规系统底座,保障高阶智驾的低时延、高稳定、高可靠运行;通过多传感器超融合感知体系,实现全场景、全天候、无盲区的精细化环境理解。

getusushu的博客 294

WPF ListView列图片加字符串显示,点击行数据更换列图片

.xaml页面代码 <Grid Loaded="Grid_Loaded"> <ListView Height="315" HorizontalAlignment="Left" Margin="168,223,0,0" Name="listView_Demo" VerticalAlignment="Top" Width="738"> ...

^菜鸟^ 1250

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片

应用实例:解析后台返回的数据,把每条都显示在ListView中,包括活动图片、店名、活动详情、地址、电话和距离等。在布局文件中ListView的定义:在布局文件ListViewItem,中定义活动图片、店名、活动详情、地址、电话和距离的布局(1)定义类MapListImageAndText管理ListViewItem中控件的内容(2)定义类MapListViewCache实例化ListViewIt...

weixin_31299543的博客 158

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ListView图片加载错乱01

Android ListView滑动过程中图片显示重复错位闪烁问题解决 主要分析Android ListView滚动过程中图片显示重复、错乱、闪烁的原因及解决方法,顺带提及ListView的缓存机制。 1、原因分析 ListView item缓存机制:为了使得性能更优,ListView会缓存行item(某行对应的View)。ListView通过adapter的getView函数获得每

qq_31860607的博客 327

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

关于ListView异步加载图片导致图片显示混乱以及ListView效率问题探讨

前面看到有帖子中有人使用notifyDataSetChanged()来解决ListView中异步加载图片第一张图片显示错误问题。首先在数据源没有变化的情况下没有必要使用notifyDataSetChanged(),会导致调用requestLayout()重绘当前界面的列,就是重新走getView().所以notifyDataSetChanged()在图片都已下载缓存完的情况下正常显示了,但是因为重

subaohao的专栏 1781

AndroidGUI18:ListView常用技巧

ListView是AdapterView的派生类,AdapterView是ViewGroup的派生类。     ListView将需要显示的内容,放在一个可以垂直滚动的列表中进行显示。而要显示的内容是由和ListView相关联的ListAdapter指定的。通常是ArrayAdapter或者CursorAdapter,这两者都是ListAdapter的派生类。   因此ArrayAdap

玄机逸士的专栏 1万+

获取网络的图片显示在ListView中显示

实际中获取网络图片的方法比较耗时,应放在别一个线程去执行,此处只为测试图片在listview中显示,放在了主线程中。主文件:package com.shao.list;import java.util.ArrayList;import java.util.HashMap;impo

4419

Android 图片 Listview

实现 Android 图片 Listview 1. 整体流程 首先,我们需要创建一个包含图片的 Listview,并显示在界面中。具体的步骤如下: 步骤 操作 1 准备图片资源 2 创建一个新的 Android 项目 3 在布局文件中添加 Listview 控件 4 创建一个自定义适配器类 5...

weixin_42119281的博客 220
上一篇: 17、网络图片加载
下一篇: 20、长图的加载显示
zdphpn
博客等级 码龄15年 2粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值