2016-08-29 6 views
0

私は、このsolutionに基づくデータバインディングを使用してRecyclerViewの空のビューソリューションを実装しようとしています。私は、RecyclerViewとRelativeLayout(空のビュー)をSwipeRefreshLayout内に持っています。ここでは、レイアウトのためのXMLは次のとおりです。RecyclerViewの空のビューに対するデータバインドの可視性は無効です

<layout xmlns:android="http://schemas.android.com/apk/res/android"> 
    <data> 
     <import type="android.view.View"/> 
     <variable 
      name="dataset" 
      type="...SeriesList"/> 
    </data> 
    <android.support.v4.widget.SwipeRefreshLayout 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/swipe_refresh_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.v7.widget.RecyclerView 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/list" 
      android:name="...SeriesFragment" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="2dp" 
      android:layout_marginRight="2dp" 
      android:layout_marginTop="10dp" 
      app:layoutManager="LinearLayoutManager" 
      tools:context=".fragments.SeriesFragment" 
      android:visibility="@{dataset.size() > 0 ? View.VISIBLE : View.GONE}"/> 

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/empty_view" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:visibility="@{dataset.size() > 0 ? View.GONE : View.VISIBLE}"> 

      <TextView 
       android:id="@+id/empty_text" 
       style="@style/Base.TextAppearance.AppCompat.Title" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_above="@+id/empty_image" 
       android:layout_centerHorizontal="true" 
       android:layout_marginBottom="10dp" 
       android:width="300dp" 
       android:gravity="center" 
       android:textColor="#59000000" /> 

      <ImageView 
       android:id="@+id/empty_image" 
       android:layout_width="128dp" 
       android:layout_height="160dp" 
       android:layout_centerInParent="true" 
       android:src="@drawable/empty" /> 
     </RelativeLayout> 
    </android.support.v4.widget.SwipeRefreshLayout> 
</layout> 

RecyclerViewはSeriesList(ObservableArrayListを拡張する)であるデータセットのサイズに基づいて、そのvisbilitiesで、空のビューになった後、あなたがRelativeLayoutを見ることができるように。だから、これをオフに基づいて、私はアダプタの目に見えるSeriesListが空の場合、RecyclerViewの視認性がなくなって、空のビューされます

FragmentSeriesListBinding binding = FragmentSeriesListBinding.inflate(inflater); 
    binding.setDataset(getmAdapter().getVisibleSeries()); 

と仮定しています:このレイアウトを含む断片で、私はそうのようなデータをバインドVISIBLEになります。空のデータセットでテストすると、RecyclerView(アイテムなし)と空のビューの両方にVISIBLEの可視性がありますが、これは不可能です。誰かが、私が期待しているようにこれがなぜ機能していないのか、いくつかの光を当てることができましたか?

答えて

0

したがって、私はhereを読んだ後にこれを修正しました。これは、SwipeRefreshLayoutに1つの子が必要であるため、FrameLayoutにRecyclerViewとRelativeLayoutをラップしました。また、thisソリューションを使用して、FragmentのレイアウトをDataBindingUtil inflate()メソッドで拡張し、FragmentのonCreateView()メソッドでバインドを設定しました。

関連する問題