For this it is necessary to create a ArrayAdapter customized, and an object to encapsulate the information that will show in the list:
Example of the object we will work on ArrayAdapter:
class ItemLista{
    String titulo;
    String subTitulo;
}
In this ArrayAdapter should be informed the type of the object we will work:
class AdapterCustomizado extends ArrayAdapter<ItemLista>
Follow the full example: 
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
    private ListView listaCustomizada;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listaCustomizada = ListView.class.cast(findViewById(R.id.listaCustomizada));
        final List<ItemLista> itens = loadList();
        /**
         * Criamos o adapter e adicionamos a lista
         */
        final AdapterCustomizado adapterCustomizado = new AdapterCustomizado(getApplicationContext(), itens);
        listaCustomizada.setAdapter(adapterCustomizado);
    }
    /**
     * Método auxiliar que carrega a lista com exemplos
     */
    private List<ItemLista> loadList(){
        //Lista de objetos que vamos exibir na lista
        final List<ItemLista> itens = new ArrayList<>(0);
        int pt = 0;
        while(pt != 10){
            final ItemLista itemLista = new ItemLista();
            itemLista.titulo =" Item #"+pt;
            itemLista.subTitulo =   "Sub titulo do item "+pt;
            itens.add(itemLista);
            pt++;
        }
        return itens;
    }
    /**
     * Objeto utilizado pelo ArrayAdapter
     */
    class ItemLista{
        String titulo;
        String subTitulo;
    }
    /**
     * Este é o ArrayAdapter Customizado, este irá trabalhar com um objeto ItemLista
     */
    class AdapterCustomizado extends ArrayAdapter<ItemLista>{
        public AdapterCustomizado(@NonNull Context context, final List<ItemLista> itens) {
            /**
             * Passamos ao contrutor o Context, o id do adapter que vamos utilizar
             * e a lista com os objetos
             */
            super(context, R.layout.adapter_customizado, itens);
        }
        @NonNull
        @Override
        public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
            /**
             * Carregamos a view com o layout...
             */
            convertView = getLayoutInflater().inflate(R.layout.adapter_customizado, parent, false);
            /**
             * Vamos carregar os componentes do adapter
             */
            TextView tituloTxt = TextView.class.cast(convertView.findViewById(R.id.name));
            TextView subTituloTxt = TextView.class.cast(convertView.findViewById(R.id.timestamp));
            /**
             * Vamos carregar objeto que será exibido,
             * para isso usamos o método getItem e como parametro a posição
             */
            final ItemLista item = getItem(position);
            tituloTxt.setText(item.titulo);
            subTituloTxt.setText(item.subTitulo);
            return convertView;
        }
    }
}
custom.xml adapter
<?xml version="1.0" encoding="utf-8"?>
<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">
    <TextView
        android:id="@+id/titulo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:textAlignment="center"
        android:textSize="24sp"
        android:textStyle="bold"
        tools:layout_editor_absoluteX="86dp"
        tools:layout_editor_absoluteY="31dp" />
    <TextView
        android:layout_margin="5dp"
        android:id="@+id/subTitulo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/titulo"
        android:layout_alignStart="@+id/titulo" />
</LinearLayout>
							
							
						 
See this tutorial on how to create a custom listview. You will need to create an Adapter class and an xml that will serve as the basis for the list. http://blog.romarconsultoria.com.br/2011/03/criando-um-listadapter-customizado-para.html
– Leandro Araujo