2012-12-24 71 views
0

我想在ListActivity內的ListView上顯示一個TextView,但文本沒有顯示出來。如何讓ListView顯示在ListView之上?

LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.main, null); 
TextView myTextView = (TextView)layout.findViewById(R.id.myTextView); 
myTextView.setVisibility(View.VISIBLE); 
myTextView.setText(R.string.emptyList); 
setContentView(layout); 

這裏是主要的佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <TextView android:id="@+id/myTextView" 
     android:paddingLeft="10dp" 
     android:paddingTop="10dp" 
     android:textSize="16sp" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:visibility="gone"/>  
    <ListView 
     android:id="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

我想要一個「空列表」通知去在屏幕的情況下,頂部的列表視圖是空的。

回答

3

爲什麼不使用setEmptyView作爲您的ListView並以這種方式進行通知。

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
<ListView 
    android:layout_width="fill_parent" 
    android:layout_height="300dip" 
    android:id="@+id/list_view" /> 
<TextView 
    android:id="@+id/empty_list_view" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="List view is empty" 
    android:visibility="gone" /> 
</LinearLayout> 

並在您的代碼中調用。

ListView listView = (ListView) findViewById(R.id.list_view); 
listView.setEmptyView(findViewById(R.id.empty_list_view)); 
listView.setAdapter(yourAdapter); 

檢查這些瞭解更多信息。

Correct use of setEmtpyView in AdapterView

http://www.technotalkative.com/android-listview-setemptyview/

+0

這是你應該做的,爲空列表中顯示的消息.. – Chrispix

+0

雖然不是絕對必要的東西,我更喜歡使用一個單獨的佈局文件爲空視圖列表項,但無論如何+1。 – Squonk

+0

我應該在setListAdapter()和setContentView()之前或之後調用setEmptyView嗎? – Phillip

1

你可以使用一個FrameLayout代替LinearLayout,這樣,無論是TextViewListView將共享相同的佈局空間(雖然不是絕對必要的)

然後你可以ListView空視圖設置爲myTextView,這將需要顯示或自動隱藏空視圖爲你的照顧。

0

我不知道你的意思是關於TextView的東西。活動加載時,您是否想要在列表上方放置某些東西?在這種情況下,將它添加到LinearLayout中的列表上將會很好。

要獲得您所指的「空列表」通知,請確保您使用的活動擴展了ListActivity,而不僅僅是Activity,並且相應的視圖標題爲「list」和「empty」。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

<ListView 
    android:id="@+id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"/> 

<TextView 
    android:id="@+id/android:empty" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:text="@string/empty_user_list"/> 

</LinearLayout>