博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定制ListView的界面(让列表中不仅有文字还有图片fruitImage.setImageResource(fruit.getImageId());)...
阅读量:5060 次
发布时间:2019-06-12

本文共 2031 字,大约阅读时间需要 6 分钟。

1.定义自己的实体类来作为ListView的适配类型如:

public class Fruit {
private String name;//水果的名字 private int imageId;//水果的图片资源 public Fruit(String name,int imageId) {
this.name=name; this.imageId=imageId; } public String getName() {
return name; } public int getImageId() {
return imageId; } }
2.新建一个布局页面(在layout文件夹下放入fruit_item.xml)其中加入一个imageView控件显示图片,再加入一个TextView显示名字
3.自定义一个适配器类,此类继承ArrayAdapter并将此类的泛型指定为Fruit接受刚刚的Fruit类
public class FruitAdapter extends ArrayAdapter
{
private int resourceId; public FruitAdapter(Context context, int textViewResourceId, List
objects)//重写了getView的方法可以将上下文,ListView的布局的id和数据传进来 {
super(context,textViewResourceId,objects);//就是这三个东西 resourceId=textViewResourceId; } @Override public View getView(int position, View convertView, ViewGroup parent) {
Fruit fruit=getItem(position);//在每个子项被滚到屏幕内时调用这个方法,获取这个水果的实例 View view= LayoutInflater.from(getContext()).inflate(resourceId,parent,false);//传入利用inflate传入布局此方法含有三个参数第三个参数指不让此布局在此界面中生效, ImageView fruitImage=(ImageView)view.findViewById(R.id.fruit_image);//在刚刚获取到的布局中,再获取listVIew和ImageView TextView fruitName=(TextView) view.findViewById(R.id.fruit_name);     fruitImage.setImageResource(fruit.getImageId());//将图片和名字放入其中      fruitName.setText(fruit.getName());      return view;//返回布局
} } 4.在主方法中写一个初始化Fruit类的函数传入各种数据 将适配器实例化传入三参 蒋listView实例化将适配器传入
private  void initFruits() 5对于ListView的优化 1.对于滚动时不断调用getView()方法的优化 调用convertView方法来缓存布局 Fruit fruit=getItem(position);
View view; if(convertView==null) {
view=LayoutInflater.from(getContext()).inflate(resourceId,parent,false); } else{
view=convertView; }
判断ConverView是否为空,不空就直接重用,空的话就去加载布局 2.第二个优化,对于getView中的findViewById()方法重复调用,借助ViewHolder来优化 ViewHolder是一个内部定义的类将控件的实例都放在Viewholder里.并借用setTag()方法来放入View中,也就是所有的实例都保存在viewHolder中
 

转载于:https://www.cnblogs.com/1521681359qqcom/p/9963435.html

你可能感兴趣的文章
第九章 前后查找
查看>>
Python学习资料
查看>>
多服务器操作利器 - Polysh
查看>>
[LeetCode] Candy
查看>>
Jmeter学习系列----3 配置元件之计数器
查看>>
jQuery 自定义函数
查看>>
jq 杂
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
作业一
查看>>
AJAX
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
js数组操作大全
查看>>
创业者要处理好的10大关系
查看>>
佛教和道教对“妖”的差异
查看>>
[TimLinux] Python IDE工具
查看>>
[TimLinux] Python Django与WSGI的简介
查看>>
从其它系统登录到SharePoint 2010系统的单点登录
查看>>
ElMAH(ASP.NET错误日志记录与通知)系列文章-基础应用篇
查看>>
pexpect学习阶段
查看>>