1.首先建立一个工程,然后再activity_main.xml中添加ListView控件
<ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent"/>2.定义一个实体类,作为ListView适配器的适配类型,新建类Fruit
public class Fruit { private String name; private int imageID; public int getImageID() { return imageID; } public String getName() { return name; } public Fruit(String name, int imageID){ this.name = name; this.imageID = imageID; } }3.在layout目录下新建自定义xml文件,就是我们要自定义的ListView的布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/fruit_image" android:layout_width="100dp" android:layout_height="100dp" /> <TextView android:id="@+id/fruit_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_margin="10dp"/> </LinearLayout>4.创建一个自定义适配器,用来为我们自定义的ListView服务,新建类FruitAdapter
package com.example.listviewtest; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.List; /** * Created by Administrator on 17/07/29. */ public class FruitAdapter extends ArrayAdapter<Fruit> { private int resuorceID; public FruitAdapter(Context context, int textViewResuorceID, List<Fruit> objects){ super(context, textViewResuorceID, objects); resuorceID = textViewResuorceID; } @Override public View getView(int position, View convertView, ViewGroup parent){ Fruit fruit = getItem(position); View view = LayoutInflater.from(getContext()).inflate(resuorceID, parent, false);
ImageView fruitImage = (ImageView) view.findViewById(R.id.fruit_image);
TextView fruitName = (TextView) view.findViewById(R.id.fruit_name);viewHolder. fruitImage.setImageResource(fruit.getImageID()) ; viewHolder. fruitName.setText(fruit.getName()) ; return view ; }} 5.修改MainActivity的代码
package com.example.listviewtest; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private List<Fruit> fruitList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initFruits(); /* 设置适配器 */ FruitAdapter adapter = new FruitAdapter( MainActivity.this, R.layout.fruit_item, fruitList); ListView listView = (ListView)findViewById(R.id.listview); listView.setAdapter(adapter); } private void initFruits(){ for (int i = 0; i < 6; i++) { Fruit apple = new Fruit("Apple", R.drawable.trex); fruitList.add(apple); Fruit banana = new Fruit("Banana", R.drawable.trex); fruitList.add(banana); } } }这里initFruits方法是将所有的水果数据添加了6遍,这样数据量就能充满整个屏幕