2013-04-11 10 views
14
<TextView 
      android:id="@android:id/empty" 
      style="@style/FacebookFont" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center_horizontal" 
      android:text="@string/no_result_found" 
      android:textColor="@color/white" /> 

これは空の表示用のXMLコードです。Android:リストビューに空のビューを設定

list.setAdapter(adapter); 
    list.setEmptyView(findViewById(android.R.id.empty)); 

私はリストビューが表示され、空のビューが移入されるも前でもその後、リストビュー内のアイテムを持って次のように私は、空のビューを設定しています。 リストビューに項目が含まれている場合、その空のビューを表示したくありません。

助けてください。

答えて

14

ListActivityを使用している場合は、手動で空のビューを設定する必要はありません。コードからlist.setEmptyView(findViewById(android.R.id.empty));を削除します。

は、以下のそのリストには何のアイテムを持っていない場合には、自動的に EmptyViewを追加しているように、あなたのレイアウトを変更し

:あなたのMainActivityListActivityを拡張されていない場合は、アダプタを設定する前に、空のビューを設定する必要が

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingLeft="8dp" 
     android:paddingRight="8dp"> 

    <ListView android:id="@android:id/list" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#00FF00" 
      android:layout_weight="1" 
      android:drawSelectorOnTop="false"/> 

    <TextView android:id="@android:id/empty" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#FF0000" 
      android:text="No data"/> 

</LinearLayout> 
+0

まだ同じ問題です。 – user2159624

+0

あなたに私に完全な活動コードとレイアウトファイルコードを教えてもらえますか?これらすべてをあなたの質問に追加してください。 –

+0

確かに、あなたは何かをする必要がある場合、そのTextView(または何のビュー)を保持しますか、実際のIDは関連付けられていません。 – Gubatron

11

は後半の答えのために申し訳ありませんが、この

list.setEmptyView(findViewById(android.R.id.empty)); 
list.setAdapter(adapter); 

をお試しください!

代替方法:アクティビティをListActivityから拡張します。そして、この

View view = getLayoutInflater() .inflate(<resource id of the empty view>, null); 
    ViewGroup viewGroup= (ViewGroup)list.getParent(); 
    viewGroup.addView(view); 
    list.setEmptyView(view); 
    list.setAdapter(adapter); 
5

であなたのリストのレイアウトにtextviewを追加します。

View emptyView = getLayoutInflater().inflate(R.layout.empty_list_cart, null); 
addContentView(emptyView, listView.getLayoutParams()); // You're using the same params as listView 
listView.setEmptyView(emptyView); 
listView.setAdapter(adapter); 
5

いくつかの正しい答えがありますが、しかし、私はこれは私が見つけた最善の方法だと思う試しID android.R.id.empty

0

@dhawalSodhaParmarが説明したものはすべて正しいものです。しかし答えが出る方法を見ると混乱があります。

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".SampleActivity"> 

    <ListView 
     android:id="@+id/list" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     android:divider="@null" 
     android:dividerHeight="0dp" /> 

    <!-- Empty view is only visible when the list has no items. --> 
    <TextView 
     android:id="@+id/empty_text_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:text="NO DOCUMENTS AVAILABLE!" 
     android:textColor="#525252" 
     android:textAppearance="?android:textAppearanceMedium" 
     android:visibility="gone"/> 

</RelativeLayout> 

すでにリストビューとアダプタでデータをバックアップしているとします。そして、すべてがうまくいっているとすれば、この空のリストビュー画面を実装したい人は、次のようにしてください: ステップ1: リストビューを持つ既存のアクティビティXMLファイルをここで使用したものと変更します。線形レイアウトまたは相対レイアウトのいずれかを使用できますが、柔軟性があるため相対型が望ましいです。そして、私が書いたようなtextView。

ステップ2: あなたの活動のJavaファイルに移動し、それをだあなたsetContentView

ListView emptyListView = (ListView) findViewById(R.id.list); 
// set your adapter here 
// set your click listener here 
// or whatever else 
emptyListView.setEmptyView(findViewById(R.id.empty_text_view)); 

後、今実行し、設定されています!

関連する問題