我有一個列表視圖,這是我的活動的主要部分。當列表視圖中沒有對象時,我想用有用的消息(TextView)替換它。如果列表未在onResume中填充,我只需再次調用setContentView。切換視圖Midactivity
但是,這隻適用於TextView。如果我打電話給setContentView(R.layout.mylayout)
,那我就空白。這在用戶創建一個項目後會特別麻煩,該項目可以正確進入另一個活動的列表視圖並返回。
我有正確的方法嗎?我該如何解決?
謝謝!
我有一個列表視圖,這是我的活動的主要部分。當列表視圖中沒有對象時,我想用有用的消息(TextView)替換它。如果列表未在onResume中填充,我只需再次調用setContentView。切換視圖Midactivity
但是,這隻適用於TextView。如果我打電話給setContentView(R.layout.mylayout)
,那我就空白。這在用戶創建一個項目後會特別麻煩,該項目可以正確進入另一個活動的列表視圖並返回。
我有正確的方法嗎?我該如何解決?
謝謝!
ListView有一個名爲的方法setEmptyView(View)通過它可以在列表爲空時顯示任何視圖。 ListView負責隱藏/顯示視圖。
TextView emptyView = (TextView)findViewById(R.id.empty_list_view);
placesList.setEmptyView(emptyView);
佈局代碼與Blrfl的代碼相同。
那麼,你有什麼在你的列表視圖?如果你只有文本,那麼你可以輸入你的消息作爲listview的第一部分,除非添加了一些東西。就像如果你有一個用listview打印的字符串數組,除非有人添加別的東西,否則試着讓數組的第一個數組成爲你的消息。
而不是使用setContentView也許你可以嘗試改變每個視圖的可見性標誌使用setVisibility。如果未填充列表,則可以將其更改爲View.GONE的可見性,並使用View.VISIBLE顯示輔助TextView,如果填充ListView,則執行相反操作。不知道這是否正是你想要的,但它值得一試。
我已經將此添加到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()
之前,我做list
和empty
一個setVisibility(View.VISIBLE)
和setVisibility(View.GONE)
分別,如果有列表中的項目和反向如果列表是空的。
我想這是一個可能的解決方案,但是我會在更復雜的情況下做些什麼,我想在那裏固定更重要的東西? – SapphireSun 2010-10-17 04:14:42