10

リストが空のときにメッセージを表示するListFragmentを追加する次のカスタム レイアウトを使用してを作成しました。TextView

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

  <ListView android:id="@id/android:list"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:drawSelectorOnTop="false"/>

  <TextView android:id="@id/android:empty"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/vsl_empty"
            android:gravity="center"
            android:layout_gravity="center"
            android:textColor="#8C8C8C" />
</LinearLayout>

データは、 から派生したカスタム アダプタを使用してロードされCursorAdapterます。データベースにデータがある場合、データが読み込まれるまでリストに空のリスト メッセージが非常に短時間表示されます。

リストがまだ入力されていないために空のリスト メッセージが一時的に表示されないようにするにはどうすればよいですか?

アップデート

here で説明されているように、特別な id を持つ と特別な id を持つListFragmentを含むレイアウトで を使用していることを強調したいと思います。ListViewandroid:listTextViewandroid:empty

設定android:visibility="invisible"は可視性に影響しません。これは、内部で表示されるように設定されているためだと思われます。

4

3 に答える 3

9

提供された回答は正しい軌道に乗っていました。確かに非表示に設定するTextView必要がありましたが、正しい場所は次のonCreateLoaderとおりです。

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args)
{
  mListView.getEmptyView().setVisibility(ListView.GONE);

  return new CursorLoader(getActivity(), CONTENT_URI, null, null, null, null);
}

また、空のビューを再度表示する必要はありません。これは、フレームワークによって自動的に行われます。

于 2013-01-03T08:23:52.153 に答える
1

TextView に以下を追加するのはどうですか

android:visibility="invisible"

XML レイアウト ファイルに追加し、必要に応じて TextView を表示します。

于 2013-01-02T16:28:12.467 に答える
-1

TextView 可視性表示に設定する必要があります。データをロードしたら、つまり、データをonLoadComplete空のビューとして設定する必要がありListViewますsetEmptyView(textView)

XMLで実行した場合、または結果が読み込まれる前に実行した場合、リストは実質的に空であるため、ビューが表示されます。したがって、空のビューを設定するには、結果が読み込まれるまで待つ必要があります。

于 2013-01-02T18:46:27.057 に答える