2015-03-25 50 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; 
    } 
} 

让我知道这是否有帮助。