定制ListView的界面(让列表中不仅有文字还有图片fruitImage.setImageResource(fruit.getImageId());)
Posted 1521681359qqcom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定制ListView的界面(让列表中不仅有文字还有图片fruitImage.setImageResource(fruit.getImageId());)相关的知识,希望对你有一定的参考价值。
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显示名字
<ImageView
android:id="@+id/fruit_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/fruit_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
/>
3.自定义一个适配器类,此类继承ArrayAdapter并将此类的泛型指定为Fruit接受刚刚的Fruit类
public class FruitAdapter extends ArrayAdapter<Fruit>{
private int resourceId;
public FruitAdapter(Context context, int textViewResourceId, List<Fruit> 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实例化将适配器传入
以上是关于定制ListView的界面(让列表中不仅有文字还有图片fruitImage.setImageResource(fruit.getImageId());)的主要内容,如果未能解决你的问题,请参考以下文章