定制ListView的界面(参考第一行代码Android)

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遍,这样数据量就能充满整个屏幕


猜你喜欢

转载自blog.csdn.net/PErryiii/article/details/76441862