2015-03-25 49 views
0

我有個具有在它的條目的可變數量的數據集一FragmentViewPager。用戶可以刪除該數據集的條目,因此數據集可能爲空(其中有0個條目)。Viewpager空數據集:顯示消息

當數據集是空的ViewPager顯示一個空的片段,但我想是顯示與顯示一個TextView片段「沒有條目,請添加一個...」,這可能嗎?我無法弄清楚如何去做。

enter image description here

的第一張照片是我現在得到,第二個是我想達到的目標。

這裏是我的FragmentViewPager的代碼:

private class ConfirmGamePagerAdapter extends FragmentStatePagerAdapter { 
    public ConfirmGamePagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public android.support.v4.app.Fragment getItem(int position) { 
     return ConfirmGameFragment.newInstance(games.get(position)); 
    } 

    @Override 
    public int getCount() { 
     return games.size(); 
    } 

    @Override 
    public int getItemPosition(Object object) { 
     return POSITION_NONE; 
    } 
} 

編輯:包含ViewPager佈局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/main_linearlayout" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_height="?attr/actionBarSize" 
    android:layout_width="match_parent" 
    android:background="#000000"> 
</android.support.v7.widget.Toolbar> 

<android.support.v4.widget.DrawerLayout 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#3F3F3F"> 

    <martin.hogge.be.lolmatchup.utils.NonSwipeableViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <!-- The navigation drawer --> 
    <ListView android:id="@+id/list_drawer" 
    android:layout_width="250dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:choiceMode="singleChoice" 
    android:divider="@android:color/transparent" 
    android:dividerHeight="0dp" 
    android:background="#1a1c25"/> 

</android.support.v4.widget.DrawerLayout> 

編輯:我的自定義ViewPager

public class NonSwipeableViewPager extends ViewPager { 

    public NonSwipeableViewPager(Context context) { 
     super(context); 
    } 

    public NonSwipeableViewPager(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 
     // Never allow swiping to switch between pages 
     return false; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     // Never allow swiping to switch between pages 
     return false; 
    } 

}

預先感謝您爲您的回答。

+0

嗨,你能告訴我你的聲明裏面的佈局文件的視圖尋呼機。 – 2015-03-25 12:37:25

+0

另一點是ConfirmGamePagerAdapter是使用正確的遊戲數據集!如果您的遊戲數據集列表爲空,您希望顯示自定義空消息,如「EMPTY DATASET請添加條目」。 – 2015-03-25 12:40:54

+0

@BhavdipPathar我添加它的佈局。是的,這就是我想顯示一個自定義的空消息。 – MHogge 2015-03-25 12:44:48

回答

2

@Shargotth我知道這是不是涉及到您的自定義viewPager很容易添加空視圖後面您自定義查看傳呼機,請參閱下面我怎麼添加自定義視圖尋呼機後面的空視圖。此文本視圖始終存在於您的佈局中,但是當數據集不爲空或空時,自定義視圖頁面會覆蓋文本視圖,因爲您的自定義視圖分頁器位於框架佈局內。我相信這會幫助你。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main_linearlayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="#000000" > 
    </android.support.v7.widget.Toolbar> 

    <android.support.v4.widget.DrawerLayout 
     android:id="@+id/drawer_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#3F3F3F" > 

     <!-- The main content view --> 

     <FrameLayout 
      android:id="@+id/content_frame" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 

      <TextView 
       android:id="@android:id/empty" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:text="@string/empty_listview" 
       android:textSize="@dimen/one_six_sp" /> 

      <martin.hogge.be.lolmatchup.utils.NonSwipeableViewPager 
       android:id="@+id/pager" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" /> 

      <ListView> 
      </ListView> 
     </FrameLayout> 

     <!-- The navigation drawer --> 

     <ListView 
      android:id="@+id/list_drawer" 
      android:layout_width="250dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      android:background="#1a1c25" 
      android:choiceMode="singleChoice" 
      android:divider="@android:color/transparent" 
      android:dividerHeight="0dp" /> 
    </android.support.v4.widget.DrawerLayout> 

</LinearLayout> 

讓我知道,如果你有任何問題或意見,讓我們嘗試:)))

+0

謝謝你的回答!我喜歡只編輯佈局的想法,不要在java文件中做任何改變。我已經添加到解決方案中的唯一的事情是,當數據集爲空時,我將FrameLayout的可見性設置爲「GONE」並將其設置爲「VISIBLE」(ViewPager中的片段未覆蓋所有佈局,因此我們可以看到消息的一部分)。還是謝謝! – MHogge 2015-03-25 13:31:51

1

由於您已經在使用片段,因此我會製作一個新的(使用空數據集的textViews),並使用replace方法正確切換。

1

更改fragmentViewPager適配器類這樣的。這可能有助於解決您的問題。

private class ConfirmGamePagerAdapter extends FragmentStatePagerAdapter { 
    public ConfirmGamePagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public android.support.v4.app.Fragment getItem(int position) { 
    if(games.size()==0) 
     return fragmentWhichShowsYourCustomNoData; 
    else 
     return ConfirmGameFragment.newInstance(games.get(position)); 
    } 

    @Override 
    public int getCount() { 
     if(games.size()==0) 
      return 1; 
     else 
     return games.size(); 
    } 

    @Override 
    public int getItemPosition(Object object) { 
     return POSITION_NONE; 
    } 
} 

讓我知道這是否有幫助。