【问题标题】:handle empty data view in recyclerview在 recyclerview 中处理空数据视图
【发布时间】:2016-09-28 20:58:51
【问题描述】:

如何在RecyclerView 中处理空数据View,我已经尝试了很多来自互联网的方法,但似乎都没有。我也在使用领域数据库,所以我不知道这是否是检查它是否为空的正确方法。

这是我的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;

}

【问题讨论】:

标签: android android-recyclerview realm


【解决方案1】:

你的 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);
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多