在ListView详解(一)中介绍了ListView的基本用法,重点是适配器的使用,通过适配器将要显示的数据传递给ListView中。上一个实例中只是使用最基本的ArrayAdapter,只能显示文字。下面我们将使用自定义适配器使得ListView的每个子项显示为图片与文字的组合。
ListView下的每一个子项均为一个对象实例,所以我们需要定义一个实体类作为适配器的适配类型。定义一个类Fruit:

Fruit.java

public class Fruit {    private String name;    private int imageId;    public Fruit(String name,int imageId){        this.name = name;        this.imageId = imageId;    }    public void setName(String name){        this.name = name;    }    public void setImageId(int imageId){        this.imageId = imageId;    }    public String getName(){        return name;    }    public int getImageId(){        return imageId;    }}

我们将每一个子项都当做一个实例,每个实例均由图片与文字组成。
为ListView的子项指定布局:
fruit_item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent">    <ImageView  android:id="@+id/fruit_image" android:layout_width="wrap_content" android:layout_height="wrap_content" />    <TextView  android:id="@+id/fruit_name" android:layout_gravity="center" android:layout_marginLeft="10dip" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>

下面创建自定义的适配器,继承ArrayAdapter,泛型指定为Fruit类:

public class FruitAdapter extends ArrayAdapter<Fruit> {    int resourceId;    public FruitAdapter(Context context,int textViewResourceId,List<Fruit> objects){        super(context,textViewResourceId,objects);        resourceId = textViewResourceId;    }    @Override    public View getView(int position,View convertView,ViewGroup parent){        //获取当前项的实例        Fruit fruit = getItem(position);        //获取ListView子项布局的Id        View view = LayoutInflater.from(getContext()).inflate(resourceId, null);        ImageView fruitImage =(ImageView) view.findViewById(R.id.fruit_image);        TextView fruitName = (TextView) view.findViewById(R.id.fruit_name);        fruitImage.setImageResource(fruit.getImageId());        fruitName.setText(fruit.getName());        return view;    }}

自定义适配器主要重写了一组构造函数,用于将上下文、LisView子项布局的id和需要显示的数据传递进来。另外重写了getView()方法,此方法在每个子项滑动到屏幕内时就会被调用。
在主函数中将自定义的适配器通过setAdapter()方法传入listview即可。

更多相关文章

  1. 动态绘制图形的基本思路
  2. android中Timer+TimerTask+Handler配合,重复定时执行某项任务(方法
  3. Android(安卓)Service的使用方法 音乐播放器实例
  4. Android(安卓)4 高级编程(第3版)试读
  5. android 适配器notifyDataSetChanged无法刷新问题解决
  6. Android循环广告的实现
  7. Android(安卓)- 开发实例(15):变色SystemBar
  8. android Task(任务)的简单理解
  9. 【android】Activity、Task、应用和进程

随机推荐

  1. 是否可以在没有安装铁python的PC上运行编
  2. Django管理员提出CSRF验证失败
  3. Python2.6及后期版本的新特性——接口和
  4. TensorFlow数据集(一)——数据集的基本使用
  5. 当我运行createsuperuser获取HTTP 401错
  6. 《Python核心编程》18.多线程编程(三)
  7. Python的范围函数如何工作?
  8. python爬虫学习之post数据的传送
  9. 在windows上安装scikit-learn开发环境
  10. Django模型选择:使用元组的第一个元素