2016-09-28 21 views
0

如何处理空数据ViewRecyclerView处理空的数据来看,我试图从互联网上这么多的方法,但没有一个似乎工作。我也使用领域数据库,所以我不知道这是否是正确的方法来检查它是否为空。在recyclerview

这是我Fragment XML在RecyclerView位于

<?xml version="1.0" encoding="utf-8"?> 
 

 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    android:layout_width="match_parent" 
 
    android:layout_height="match_parent"> 
 

 
    <TextView 
 
     android:id="@+id/tv_no_data" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent" 
 
     android:background="@android:color/holo_green_dark" 
 
     android:gravity="center" 
 
     android:text="emptty" 
 
     android:textAppearance="?android:textAppearanceMedium" 
 
     android:textColor="@android:color/white" 
 
     android:visibility="invisible" /> 
 

 
    <android.support.v7.widget.RecyclerView 
 
     android:id="@+id/rv_favorite" 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent" 
 
     android:background="@color/colorPrimaryDark"> 
 

 
    </android.support.v7.widget.RecyclerView> 
 

 
</FrameLayout>

,这是我的片段类

public class FavouriteFragment extends Fragment { 
RecyclerView mRecyclerView; 
FavouriteAdapter adapter; 
Realm mRealm; 
int positions; 
TextView emptyText; 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View view=inflater.inflate(R.layout.favourite_fragment,container,false); 
    mRealm=Realm.getDefaultInstance(); 
    RealmQuery<news> quotesRealmQuery = mRealm.where(News.class).equalTo("favourite",true); 
    RealmResults<News> mResults = newsRealmQuery.findAll(); 

    emptyText= (TextView) view.findViewById(R.id.tv_no_data); 

    //adapter=new FavouriteAdapter(getActivity(),mResults,mRealm); 
    mRecyclerView= (RecyclerView) view.findViewById(R.id.rv_favorite); 
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 

    if (!mResults.isEmpty()) { 
     //if data is available, don't show the empty text 
     emptyText.setVisibility(View.INVISIBLE); 
     adapter=new FavouriteAdapter(getActivity(),mResults,mRealm,pos,single); 
     mRecyclerView.setAdapter(adapter); 
     mRealm.addChangeListener(new RealmChangeListener<Realm>() { 
      @Override 
      public void onChange(Realm element) { 
       adapter.notifyItemRemoved(positions); 
      } 
     }); 

    } else 
     emptyText.setVisibility(View.VISIBLE); 




    return view; 

} 
+0

此答案无效? http://stackoverflow.com/questions/28217436/how-to-show-an-empty-view-with-a-recyclerview –

回答

2

你RecyclerView是不是透明的,所以你要记得当它是空的时候隐藏它:

if (!mResults.isEmpty()) { 
      //if data is available, don't show the empty text 

      emptyText.setVisibility(View.INVISIBLE); 
      mRecyclerView.setVisibility(View.VISIBLE); 

     } else { 
      emptyText.setVisibility(View.VISIBLE); 
      mRecyclerView.setVisibility(View.GONE); 
     }