0

タブ付きレイアウトと、タブをビューとして使用するアクティビティがあります。のように 3 つのタブがありますListViewsTextViewリストのいずれかが空の場合は、代わりに単純なものを表示したいと思います。私は多くの投稿を見てきましたが、それらはListViewすべてLinearLayout. 複数ListViewsまたはFrameLayout. 可視性 = GONEを a 内に設定することはできませんFrameLayoutか? それでもTextViewは常に と一緒に表示されるからListViewです。このシナリオで何ができるかを誰かが提案できますか?

TextViewまた、別のxmlファイルに含めてみました。TextViewしかし、それを私のに追加する方法がわかりませんFrameLayout

これは私が3つすべてのためにやっていることですListViews

TextView empty = (TextView) findViewById(R.id.blank);
FrameLayout frameLayout = (FrameLayout) findViewById(android.R.id.tabcontent);

mListView_top10 = (ListView)findViewById(R.id.Top_10);
if(TopWR.size()!=0) {
      mListView_top10.setAdapter(new ArrayAdapter<String>(this, R.layout.listview_row,TopWR));
} else {
  frameLayout.addView(empty);
}

フレームレイアウト

<FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"        
        android:background="@drawable/innerdashboard_bg"
        android:layout_weight="1">


            <ListView 
            android:id="@+id/Top_10"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:paddingRight="5dp" 
            android:text="this is a tab" />


        <ListView 
            android:id="@+id/Billable"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:paddingRight="5dp" 
            android:text="this is another tab" />


        <ListView
            android:id="@+id/Product"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:paddingRight="5dp"
            android:textSize="14sp"
            android:text="this is a third tab" />

 </FrameLayout>

テキストビュー

<TextView  xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/blank"
            android:gravity="center"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="No records Avaible"
            android:textColor="#ffffff" />

編集

を使用してみましたがsetEmptyView、3 つすべてでListViews別々の空のビューを使用していますが、機能しません!

TextView empty1 = (TextView) findViewById(R.id.blank1);
mListView_top10 = (ListView)findViewById(R.id.Top_10);
mListView_top10.setEmptyView(empty1);
mListView_top10.setAdapter(new ArrayAdapter<String>(this, R.layout.listview_row,TopWR));

xml:

<FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/innerdashboard_bg"
        android:layout_weight="1">


        <LinearLayout 
            android:id="@+id/Top_10"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <ListView 
            android:id="@+id/Top_10"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:paddingRight="5dp" 
            android:text="this is a tab" />

            <TextView  
            android:id="@+id/blank1"
            android:gravity="center"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="No records Avaible"
            android:textColor="#ffffff" />

        </LinearLayout>


        <LinearLayout 
            android:id="@+id/Billable"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

        <ListView 
            android:id="@+id/Billable"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:paddingRight="5dp" 
            android:text="this is another tab" />

        <TextView  
            android:id="@+id/blank2"
            android:gravity="center"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="No records Avaible"
            android:textColor="#ffffff" />

        </LinearLayout>

        <LinearLayout 
            android:id="@+id/Product"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

        <ListView
            android:id="@+id/Product"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:paddingRight="5dp"
            android:textSize="14sp"
            android:text="this is a third tab" />

        <TextView  
            android:id="@+id/blank3"
            android:gravity="center"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="No records Avaible"
            android:textColor="#ffffff" />

        </LinearLayout>

</FrameLayout>
4

4 に答える 4

3

as 引数を渡して をsetEmptyView(...)呼び出すだけです。ListViewTextView

TextView empty = (TextView) findViewById(R.id.blank);
mListView_top10.setEmptyView(empty);

ListViewは、「空の」ビューの可視性の切り替えを自動的に処理する必要があります。

ヒント: 引数はジェネリックViewであるため、 の任意のサブクラスView、またはより複雑なビュー階層を渡すことができます。

余談ですが、シナリオの衝突を避けるために、おそらくそれぞれListViewTextViewインスタンスを空のビューとして指定する必要があります。たとえば、あるリストにはコンテンツがあり、別のリストには含まれていない場合などです。

于 2012-07-13T02:51:22.540 に答える
1

これは、リストが空のときに空のアイテムを追加することで解決できます。次の例は、編集前のコードに基づいています。

FrameLayout frameLayout = (FrameLayout) findViewById(android.R.id.tabcontent);

mListView_top10 = (ListView)findViewById(R.id.Top_10);
if (TopWR.size() == 0) {
  // add a single item to the array, in order to indicate the list is empty
  TopWR.add("The List Is Empty");
}
mListView_top10.setAdapter(new ArrayAdapter<String>(this, R.layout.listview_row,TopWR));

空のリストの表示方法をより洗練させたい場合は、ArrayAdapter をカスタム アダプターに置き換えることができます。リストが空の場合は、別のアダプターを使用することもできます。

于 2012-07-20T01:00:50.797 に答える
1

ViewStubここではListView、FrameLayout 内で使用することをお勧めします。ListView に使用できるデータがある場合、ListView にデータがない場合は、ViewStubに使用VIEW.GONEします。から例をダウンロードして動作させることができます。ViewStubVIEW.VISIBLEgithub

于 2012-07-13T04:25:04.260 に答える
0

Java コードの各 ListView で Visibility を設定しようとしましたか?

TextView empty = (TextView) findViewById(R.id.blank);
FrameLayout frameLayout = (FrameLayout) findViewById(android.R.id.tabcontent);


mListView_top10 = (ListView)findViewById(R.id.Top_10);
      if(TopWR.size()!=0) {
          mListView_top10.setVisibility(View.VISIBLE);
          mListView_top10.setAdapter(new ArrayAdapter<String>(this,
                    R.layout.listview_row,TopWR));


      }
      else {
          mListView_top10.setVisibility(View.GONE);
          empty.setVisibility(View.VISIBLE);
          frameLayout.addView(empty);

      }

テキストビュー

<TextView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/blank"
        android:visibility="gone"
        android:gravity="center"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="No records Avaible"
        android:textColor="#ffffff" />
于 2012-07-13T02:55:54.227 に答える