2010-10-17 101 views
0

我有一個列表視圖,這是我的活動的主要部分。當列表視圖中沒有對象時,我想用有用的消息(TextView)替換它。如果列表未在onResume中填充,我只需再次調用setContentView。切換視圖Midactivity

但是,這隻適用於TextView。如果我打電話給setContentView(R.layout.mylayout),那我就空白。這在用戶創建一個項目後會特別麻煩,該項目可以正確進入另一個活動的列表視圖並返回。

我有正確的方法嗎?我該如何解決?

謝謝!

回答

3

ListView有一個名爲的方法setEmptyView(View)通過它可以在列表爲空時顯示任何視圖。 ListView負責隱藏/顯示視圖。

TextView emptyView = (TextView)findViewById(R.id.empty_list_view); 
placesList.setEmptyView(emptyView); 

佈局代碼與Blrfl的代碼相同。

1

那麼,你有什麼在你的列表視圖?如果你只有文本,那麼你可以輸入你的消息作爲listview的第一部分,除非添加了一些東西。就像如果你有一個用listview打印的字符串數組,除非有人添加別的東西,否則試着讓數組的第一個數組成爲你的消息。

+0

我想這是一個可能的解決方案,但是我會在更復雜的情況下做些什麼,我想在那裏固定更重要的東西? – SapphireSun 2010-10-17 04:14:42

1

而不是使用setContentView也許你可以嘗試改變每個視圖的可見性標誌使用setVisibility。如果未填充列表,則可以將其更改爲View.GONE的可見性,並使用View.VISIBLE顯示輔助TextView,如果填充ListView,則執行相反操作。不知道這是否正是你想要的,但它值得一試。

1

我已經將此添加到BenV的回答中作爲註釋,但我無法粘貼代碼。以下是我做的佈局:

<?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="@android:id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1.0" 
    /> 
    <TextView android:id="@android:id/empty" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center" 
     android:text="@string/list_empty" 
    /> 
</LinearLayout> 

剛上ArrayAdapter調用notifyDataSetChanged()之前,我做listempty一個setVisibility(View.VISIBLE)setVisibility(View.GONE)分別,如果有列表中的項目和反向如果列表是空的。