这是一个使用BaseAdapter编程的实例。

源代码

MainActivity

package com.example.administrator.listview;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SimpleAdapter;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    //设置3个按钮
    Button btnArray, btnSimple, btnBase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //找到xml中的按钮
        btnArray = ((Button) findViewById(R.id.array_adapter));
        btnSimple = ((Button) findViewById(R.id.simple_adapter));
        btnBase = ((Button) findViewById(R.id.base_adapter));

        //设置监听事件
        btnArray.setOnClickListener(this);
        btnSimple.setOnClickListener(this);
        btnBase.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {

            //按下第一个按钮的情况
            case R.id.array_adapter:

                Intent intent = new Intent(this, ArrayActivity.class);
                startActivity(intent);

                break;

            //按下第二个按钮的情况
            case R.id.simple_adapter:

                Intent simpleIntent = new Intent(this,SimpleActivity.class);
                startActivity(simpleIntent);

                break;

            //按下第三个按钮的情况
            case R.id.base_adapter:

                Intent baseIntent = new Intent(this,BaseActivity.class);
                startActivity(baseIntent);

                break;

        }

    }
}

activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.administrator.listview.MainActivity">

    <Button
        android:id="@+id/array_adapter"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ArrayAdapt"
        />

    <Button
        android:id="@+id/simple_adapter"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="SimpleAdapt"
        />

    <Button
        android:id="@+id/base_adapter"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="BaseAdapt"
        />

</LinearLayout>

BaseActivity

package com.example.administrator.listview;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class BaseActivity extends AppCompatActivity {

    ListView listView;

    List<User> data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);

        listView = ((ListView) findViewById(R.id.listview));

        data = new ArrayList<>();

        data.add(new User("john", 21));
        data.add(new User("john2", 22));
        data.add(new User("john3", 23));
        data.add(new User("john4", 25));
        data.add(new User("john5", 27));
        data.add(new User("john6", 28));
        data.add(new User("john7", 28));
        data.add(new User("john8", 28));
        data.add(new User("john9", 20));
        data.add(new User("john10", 28));
        data.add(new User("john11", 29));

        MyApdater myadpater = new MyApdater();

        listView.setAdapter(myadpater);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                User user = data.get(position);

                Toast.makeText(getApplicationContext(),user.getName()+" "+user.getAge(),Toast.LENGTH_LONG).show();
            }
        });


    }

    class MyApdater extends BaseAdapter {

        @Override
        public int getCount() {
            return data.size();
        }

        @Override
        public Object getItem(int position) {
            return data.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }


        //这个方法在安卓绘制listview的每一项的时候都会调用
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            ViewHolder holder;

            if (convertView == null) {

                holder = new ViewHolder();

                convertView = LayoutInflater.from(getApplication()).inflate(R.layout.base_item, null);

                holder.tvName = ((TextView) convertView.findViewById(R.id.base_item_name));

                holder.tvAge = ((TextView) convertView.findViewById(R.id.base_item_age));

                convertView.setTag(holder);

            } else

            {
                holder = ((ViewHolder) convertView.getTag());
            }


            User user = data.get(position);

            holder.tvName.setText(user.getName());

            holder.tvAge.setText(user.getAge() + " ");

            return convertView;
        }

        class ViewHolder {

            TextView tvName;
            TextView tvAge;


        }

    }


}

activity_base

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@id/listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.administrator.listview.BaseActivity">

</ListView>