2011-09-13 27 views
5

我試圖設置空視圖三個列表視圖,即2擴張和一個列表視圖,它們在不同的標籤:的ListView/ExpandableListView setEmptyView()有沒有效果

LayoutInflater inflater = getLayoutInflater(); 
     View emptyView = inflater.inflate(R.layout.empty_view, null, false); 
... 
ExpListView1.setEmptyView(emptyView); 
ListView.setEmptyView(emptyView); 
ExpListView2.setEmptyView(emptyView); 

它也沒有影響 - 不顯示空白視圖。同樣的,這一段代碼:

View emptyView = inflater.inflate(R.layout.empty_view, null, false); 
View emptyRelativeLayout = (RelativeLayout) emptyView.findViewById(R.id.empty_view_layout); 
ExpListView1.setEmptyView(emptyRelativeLayout); 

empty_view_layout.xml:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    inflater = getLayoutInflater(); 
    emptyView = inflater.inflate(R.layout.empty_view, null); 
    addContentView(emptyView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
+1

UPD:當我嘗試使用特定的@android:id/empty添加空的TextView時,它僅適用於列表視圖,但不適用於可伸縮視圖。 – 87element

回答

6

問題是由添加空視圖作爲另一內容視圖我的活動解決這樣做:

activity_main。 XML

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <ExpandableListView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/expListView"> 

     </ExpandableListView> 


     <TextView 
      android:id="@+id/txtEmptyView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:gravity="center" 
      android:padding="10dp" 
      android:text="@string/no_game_available" 
      android:textAppearance="@android:style/TextAppearance.Medium" 
      android:textColor="@android:color/white" /> 

</RelativeLayout> 

MainActivity.java

ExpandableListView expandableListView = (ExpandableListView) findViewById(R.id.expandableListView); 

TextView txtEmptyView = (TextView) view.findViewById(R.id.txtEmptyView); 

expandableListView.setEmptyView(txtEmptyView); 

希望這會幫助你。

+2

我剛剛明白了整個事情是如何工作的,我想我會分享:列表('android.R.id.list')和空視圖('android.R.id.empty')必須附加到活動作爲contentView,這也可以通過將它們放在'setContentView'使用的layout xml文件中來實現,所以沒有通貨膨脹。此外,如果它們具有上述ID,則無需調用'setEmptyView':請參閱http://stackoverflow.com/a/2767974/253468。將它們放在同一個文件中的好處是你可以自定義它出現在哪裏以及如何,最簡單的方法是將它們都包裝在一個「FrameLayout」中。 – TWiStErRob

+1

省略'setEmptyView'只能在ListActivity中使用。 – TWiStErRob

0

我:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/empty_view_layout"> 
    <TextView 
    style="@android:style/TextAppearance.Large" 
    android:id="@+id/empty_view_textview" 
    android:layout_width = "fill_parent" 
    android:layout_height="fill_parent" 
    android:text="@string/no_items_in_list" 
    android:layout_centerInParent="true"/> 
</RelativeLayout>