Pour faire un "android listview empty message", il suffit de rajouter une View (TextView pour faire simple), et de définir la vue vide à afficher si la ListView est vide à travers .setEmptyView()

De ce fait, le TextView déclaré dans le XML est automatiquement cachée s'il y a des items, et à l'inverse si aucun item alimente la ListView, alors le TextView est affiché.

<RelativeLayout 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"
    tools:context=".MyListActivity" >
 
    <ListView
        android:id="@id/android:list"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/spinnerSort" />
 
	<TextView 
	    android:id="@android:id/empty"
	    android:layout_width="fill_parent"
	    android:layout_height="fill_parent"
	    style="@android:style/TextAppearance.Large"
	    android:gravity="center"
	    android:text="Aucun Element" />
 
</RelativeLayout>
// Set list adapter
		myObjectAdapter = new MyObjectArrayAdapter(this, new ArrayList<MyObject>());
		getListView().setAdapter(myObjectAdapter );
 
		TextView emptyText = (TextView) findViewById(android.R.id.empty);
		getListView().setEmptyView(emptyText);