Let's start with simple requirement.
A list view containing a image & 2 TextViews as below.
To achieve this one has to create an model of single list in a seperate layout & inflate it to listview.
Let's do it.

listview



Create a ListView in the View of our current layout. "activity_main.xml"



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    tools:context=".MainActivity" >

    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>



Create a customView  "custom_list_view.xml"


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#EEE"
    android:minHeight="90dp"
    android:padding="4dp"
    tools:ignore="HardcodedText,ContentDescription" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:maxHeight="60dp"
        android:maxWidth="60dp"
        android:scaleType="fitXY"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="8dp"
        android:layout_toRightOf="@+id/imageView1"
        android:text="TextView1"
        android:textSize="21sp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/imageView1"
        android:layout_alignParentRight="true"
        android:layout_marginRight="16dp"
        android:text="TextView2" />

</RelativeLayout>

we get this with the above code.

listview


Inflate this layout as adapter to our listView.


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

        mListView = (ListView) findViewById(R.id.list_view);
        CustomAdapter adapter = new CustomAdapter(this);
        mListView.setAdapter(adapter);

    }



Create a sub class CustomAdapter extending BaseAdapter, add unimplemented methods


    public class CustomAdapter extends BaseAdapter
    {

        Activity sActivity;

        public CustomAdapter(final Activity mActivity) {
            this.sActivity = mActivity;
        }

        @Override
        public int getCount() {
            /*
             * Length of our listView
             */
            count = MainActivity.textview1.length; //Refer Below
            return count;
        }

        @Override
        public Object getItem(int position) {

            /*
             * Current Item
             */
            return position;
        }

        @Override
        public long getItemId(int position) {
            /*
             * Current Item's ID
             */
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            View mView = convertView;
            if (mView == null)
            {
                /*
                 * LayoutInflater
                 */
                LayoutInflater sInflater = (LayoutInflater) sActivity
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                /*
                 * Inflate Custom List View
                 */
                mView = sInflater.inflate(R.layout.custom_list_view, null, false);

            }

            /* **************CUSTOM LISTVIEW OBJECTS**************** */

            TextView sTV1 = (TextView) mView.findViewById(R.id.textView1);
            TextView sTV2 = (TextView) mView.findViewById(R.id.textView2);
            ImageView sIMG = (ImageView) mView.findViewById(R.id.imageView1);

            /* **************CUSTOM LISTVIEW OBJECTS**************** */

            /* **************ADDING CONTENTS**************** */
            sTV1.setText(MainActivity.textview1[position]);
            sTV2.setText(MainActivity.textview2[position]);
            sIMG.setImageResource(R.drawable.ic_launcher);
            /* **************ADDING CONTENTS**************** */

            /*
             * Return View here
             */
            return mView;
        }



Add OnItemClickListener to get clicked item



import android.widget.AdapterView.OnItemClickListener;


        mListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView parent, View view, int position, long id) {

                Toast.makeText(getApplicationContext(),
                        textview1[position] + "\n" + textview2[position], Toast.LENGTH_SHORT)
                        .show();

            }
        });



Finally with Activity and CustomAdapter.


/**
 * Author  : VenomVendor
 * Dated  : 5 Dec, 2013 4:19:37 PM
 * Project  : SimpleListView
 * Contact  : info@VenomVendor.com
 * URL   : https://www.google.co.in/search?q=VenomVendor
 **/

package vee.simplelistview;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

    ListView mListView;
    int count = 0;
    final static String[] textview1 = {
            "Name1", "Name2", "Name3", "Name4", "Name5", "Name6", "Name7", "Name8"
    };
    final static String[] textview2 = {
            "Age1", "Age2", "Age3", "Age4", "Age5", "Age6", "Age7", "Age8"
    };

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

        mListView = (ListView) findViewById(R.id.list_view);
        final CustomAdapter adapter = new CustomAdapter(this);
        mListView.setAdapter(adapter);

        mListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView parent, View view, int position, long id) {

                Toast.makeText(getApplicationContext(),
                        textview1[position] + "\n" + textview2[position], Toast.LENGTH_SHORT)
                        .show();

            }
        });

    }

    /*
     * CustomAdapter
     */
    public class CustomAdapter extends BaseAdapter
    {

        Activity sActivity;

        public CustomAdapter(final Activity mActivity) {
            this.sActivity = mActivity;
        }

        @Override
        public int getCount() {
            /*
             * Length of our listView
             */
            count = MainActivity.textview1.length;
            return count;
        }

        @Override
        public Object getItem(int position) {

            /*
             * Current Item
             */
            return position;
        }

        @Override
        public long getItemId(int position) {
            /*
             * Current Item's ID
             */
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            View mView = convertView;
            if (mView == null)
            {
                /*
                 * LayoutInflater
                 */
                final LayoutInflater sInflater = (LayoutInflater) sActivity
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                /*
                 * Inflate Custom List View
                 */
                mView = sInflater.inflate(R.layout.custom_list_view, null, false);

            }

            /* **************CUSTOM LISTVIEW OBJECTS**************** */

            /*
             * DO NOT MISS TO ADD "mView"
             */
            final TextView sTV1 = (TextView) mView.findViewById(R.id.textView1);
            final TextView sTV2 = (TextView) mView.findViewById(R.id.textView2);
            final ImageView sIMG = (ImageView) mView.findViewById(R.id.imageView1);

            /* **************CUSTOM LISTVIEW OBJECTS**************** */

            /* **************ADDING CONTENTS**************** */
            sTV1.setText(MainActivity.textview1[position]);
            sTV2.setText(MainActivity.textview2[position]);
            sIMG.setImageResource(R.drawable.ic_launcher);
            /* **************ADDING CONTENTS**************** */

            /*
             * Return View here
             */
            return mView;
        }

    }
} 


SimpleListView on GitHub


Final Required View



Happy Coding :)