2011-09-23 3 views
0

XML에 사용자 지정 ListView를 만들 때 android:id/empty 태그를 ID에 추가하면 ListView가 비어있을 때 해당 뷰가 표시됩니다. 이 안드로이드 documentation에서 언급했듯이. 난 궁금해서, 누구도 코드에서 동등하게 동적으로 수행하는 법을 알고 있습니까?ListView android : 코드가 비어 있음

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에 비어 갈 때 모든 것이 사라되도록 :

UPDATE이 내가 가진 것입니다.

+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; 
} 

귀하의 문제를 해결하는 데 도움을 드리겠습니다.

해피