2011-09-23 17 views
0

在XML中創建自定義ListView時,您可以將android:id/empty標記添加到ID以在ListView爲空時顯示該視圖;如Android documentation中所述。我只是想知道,有沒有人知道如何在代碼中動態地執行相應的操作?ListView android:在代碼中爲空

UPDATE這是我有:

public class CustomList extends ListView { 
    public CustomList(Context context) { 
     // some initialization 
     TextView text = new TextView(context); 
     // some parameters like text size, color, and font are set here 
     setEmptyView(text); 
    } 
} 

setEmptyView似乎無效,其實只是導致當ListView控件進入空走了一切。

+0

檢查我的更新答案是什麼我嘗試使用setEmptyView和它的作品。 –

+0

定義一切都在這裏? –

+0

我可以向你保證,它只是設置適配器,一些觸摸和點擊事件監聽器,只是設置。 – Brian

回答

3

很簡單。使用FrameLayout

框架佈局是Android開發人員用於組織視圖控件的最簡單和最有效的佈局類型之一。它們比其他一些佈局的使用頻率低,因爲它們通常只用於顯示一個視圖或重疊的視圖。框架佈局通常用作容器佈局,因爲它通常只有一個子視圖(通常是另一個佈局,用於組織多個視圖)。

例如:

<FrameLayout android:id="@+id/list_and_empty_message_container" 
     android:layout_height="wrap_content" android:layout_width="fill_parent" 
     android:orientation="vertical"> 
     <!-- List view --> 
     <ListView android:id="@+id/main_list_view" 
      android:background="@android:color/transparent" 
      android:layout_width="fill_parent" android:layout_height="wrap_content" 
      android:cacheColorHint="#00000000" android:layout_gravity="top" 
      android:divider="#D7C3F8" android:dividerHeight="2dip" /> 
     <TextView android:text="No info Found." android:id="@+id/list_empty_txt" 
      android:layout_height="wrap_content" android:textSize="16.1sp" 
      android:textStyle="bold" android:typeface="monospace" 
      android:layout_marginLeft="5dip" android:layout_gravity="center_vertical" 
      android:gravity="center" android:textColor="#000000" 
      android:layout_width="fill_parent" android:visibility="gone" /> 
    </FrameLayout> 

和計數您的數據適配器。如果這是空的,則將textview設置爲可見,否則將可見性設置爲消失。

下面放代碼在你的onCreate(),

TextView emptyText = (TextView) findViewById(R.id.list_empty_txt);; 
     if(Your_data_array.size() <= 0) 
      emptyText.setVisibility(View.VISIBLE); 
     else 
      emptyText.setVisibility(View.GONE); 

它將工作。

* _ __ _ __ _ __ _ _Updated_ _ __ _ __ _ __ *

採取ListActivity類一看,有一個如果您的數據源爲空,則會設置空信息。

public void onContentChanged() { 
    super.onContentChanged(); 
    View emptyView = findViewById(com.android.internal.R.id.empty); 
    mList = (ListView)findViewById(com.android.internal.R.id.list); 
    if (mList == null) { 
     throw new RuntimeException( 
       "Your content must have a ListView whose id attribute is " + 
       "'android.R.id.list'"); 
    } 
     //Take a look here 
    if (emptyView != null) { 
     mList.setEmptyView(emptyView); 
    } 
    mList.setOnItemClickListener(mOnClickListener); 
    if (mFinishedStart) { 
     setListAdapter(mAdapter); 
    } 
    mHandler.post(mRequestFocus); 
    mFinishedStart = true; 
} 

我會幫你解決你的問題。

編碼愉快:)