First of all, your TextView should have an initial visibility of GONE:
android:visibility="gone"
Second, the name
android:id="@android:id/empty"
is reserved for ListActivity/ListFragment, therefore is automatically managed by Android itself
So, I use a similar name... which is different
android:id="@+id/txtEmpty"
Last, but not least, in my code I do:
// Set the empty TextView
txtEmpty = (TextView) v.findViewById(R.id.txtEmpty);
txtEmpty.setText(res.getString(R.string.no_data));
elv.setEmptyView(txtEmpty);
being elv the name of my ExpandableListView (a ListView, in your case)