1. 程式人生 > >定製ListView的介面(讓列表中不僅有文字還有圖片fruitImage.setImageResource(fruit.getImageId());)

定製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例項化將介面卡傳入